Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181

Сравнение строк

09.03.2015, 01:23. Показов 4382. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Возникла проблемка при сравнивании строк, не могу найти ошибку.
Я считываю строку из файла и смотрю если она начинается на "§", но даже если строка начинается с этого символа я получаю False.
Что я делаю не правильно?

Python
1
2
3
4
5
6
7
def par():
    f = open('Item.txt')
    string = f.read()
    if(string.startswith("§")):
        return True
    else:
        return False
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2015, 01:23
Ответы с готовыми решениями:

Сравнение строк
Мне нужна подсказка вот у меня есть файл вида там Информация ................... запрос: { } ответ: { }

Сравнение строк
Здравствуйте, Дано: две строки которые надо по буквенно сравнить и вывести количество отличий. Не могу сообразить как сделать эту...

Попарное сравнение строк
Добрый день. Имеется файл строк. Нужно сравнить первую строку со второй, вторую с третьей и т.д. Есть участки, где две и более соседних...

17
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 145
09.03.2015, 08:40
Jennea,
Python
1
2
3
4
5
6
7
8
9
10
11
def par():
    with open('text.txt', 'r', encoding='utf-8') as file_read:
        st_read = file_read.read()
        get_str = st_read.split('\n')
        for x in get_str:
            if(x.startswith("§")):
                print(True)
                #return True
            else:
                print(False)
                #return False
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
09.03.2015, 12:14
Python
1
2
3
4
def par():
    with open('Item.txt', 'r', encoding='utf-8') as f:
        for line in f:
            print (line[:1] == '§')
2
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 15:11  [ТС]
Спасибо всем большое!!!

Добавлено через 2 часа 37 минут
Протестировала эти две функции, они мне тоже возвращают False, когда ожидаю True.
В чем еще может быть причина?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 15:12
файл в студию
0
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 15:17  [ТС]
В файле просто одна строка § string. Сохраняю как UTF-8. Но и его читая, возвращает False.
Вложения
Тип файла: txt Item.txt (12 байт, 8 просмотров)
0
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 15:34  [ТС]
Получаю False даже если сравниваю любые другие знаки или простые буквы. Если слово начинается с А и я сравниваю с А, возвращает False.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 16:07
Вся проблема в том, что после считывания файла в самом начале у него появляется пробел. По этому интерпретатор честно говорит, что первый символ не знак параграфа.
Странно, то, что если пытаться удалить пробелы из строки, они не удаляются.

В общем если создать другой файл, то все работает. Не знаю, что за магия такая с твоим файлом.

В общем вот код (в принципе почти твой):
Python
1
2
3
4
5
6
inp = open('Item.txt')
for i in inp:
    if i.startswith('§'):
        print(True)
    else:
        print(False)
и вот файл, но который я создал у себя на компе. С ним все работает как надо.
Вложения
Тип файла: txt Item.txt (9 байт, 3 просмотров)
1
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 17:42  [ТС]
Спасибо!

Да, действительно магия....
С Вашим файлом все работает. С моими, даже созданными заново не работает ничего))))
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 17:52
Цитата Сообщение от Jennea Посмотреть сообщение
Да, действительно магия....
Я сам в шоке. Во 1 при считывании файла появляется лишний пробел слева и во 2 он не удаляется с помощью strip.
Мистика да и только.
0
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 17:57  [ТС]
Не подскажите, какой средой разработки пользуйтесь???
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 17:59
Конечно подскажу, pycharm.
0
 Аватар для Jennea
8 / 8 / 0
Регистрация: 29.05.2011
Сообщений: 181
09.03.2015, 18:03  [ТС]
Спасибо!
Нашла источник проблемы.
Это виндовозный блокнот шалит. Когда создаю файл в NotePad++ пробел уходит и все работает.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 18:22
Хмм
От windows и её кривых инструментов, всегда одни проблемы...
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
09.03.2015, 18:54
alex925, Могу ошибаться, но если открыли файл
Python
1
inp = open('Item.txt')
, то надо и закрыть.
Python
1
inp.close()
Конструкция
Python
1
with open('Item.txt',) as f:
закрывает его автоматически.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
09.03.2015, 19:29
Marinero, Интерпретатор его и сам закроет. Проблем с этим не было ни когда, по этому не сильно заморачиваюсь.
Про контекстные менеджеры тож вкурсе. Америку не открыл)
0
45 / 39 / 24
Регистрация: 29.11.2013
Сообщений: 145
10.03.2015, 09:48
Цитата Сообщение от alex925 Посмотреть сообщение
Я сам в шоке. Во 1 при считывании файла появляется лишний пробел
Это не пробел, а "byte order mark" http://en.wikipedia.org/wiki/B... y_encoding
Для себя вывод, лучше на будущее использовать "utf_8_sig":
Python
1
2
3
4
def par():
    with open('Item.txt', 'r', encoding='utf-8-sig') as f:
        for line in f:
            print (line[:1] == '§')
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
10.03.2015, 14:37
Цитата Сообщение от ivsatel Посмотреть сообщение
лучше на будущее использовать "utf_8_sig":
Лучше не использовать винду и её инструменты)
Просто не ожидал такого, и в остальных редакторах не показывается, что используется utf8-bom.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2015, 14:37
Помогаю со студенческими работами здесь

Сравнение двух строк
Здравствуйте! Пишу очень простенькую консольную программу на Python (данный язык программирования только начал изучать), возник вопрос. ...

Не работает сравнение строк
Ребят помогите разобраться, это какой-то кошмар сижу уже часов 5 ломаю голову. Есть html документ, необходимо из него удалить...

Сравнение строк
Вася пишет программу. Программа читает два числа — x и y, преобразует их в строку или число, выполняет выражение с одной операцией...

Сравнение строк
Сортировать строки можно как по возрастанию, так и по убыванию значений в том смысле, который подразумевается при сравнении строк. На вход...

Сравнение двух строк
Даны две строки. Выведите ту их них, которая лексикографически меньше. Строки могут быть одинаковыми, тогда можно вывести любую....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru