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

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

09.03.2015, 01:23. Показов 4367. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru