Поиск в загруженном файле в Python - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь классифицировать информацию, содержащуюся в текстовых файлах, но натолкнулся на странную проблему: я загружаю файл, помещаю информацию в переменную (которая является строкой) и когда я пытаюсь использовать str.find ( ) для поиска по ключевым словам внутри, я всегда получаю -1. Если я распечатываю содержимое переменной, явно помещаю ее в переменную и использую str.find () таким же образом, я получаю правильные результаты. Обе переменные имеют одинаковое содержимое, обе являются строками, но одна из них недоступна для поиска. Что я делаю не так? Это сводит меня с ума.

Пример кода:

f=open('D:/test.txt','r')
print(f.read()) 
var1=f.read()
print(type(var1)) #<class 'str'>
print(str.find(var1,"name")) #gives -1
var2='{"_id": "12345", "name": "Bob", "Age": 30}' #copied manually from the first print

print(type(var2)) #<class 'str'> #gives 18

var1.find ("name") тоже не работает. Я использую Python 3.6 и PyCharm.

Заранее спасибо.

1 Ответ

0 голосов
/ 07 сентября 2018

Проблема, с которой вы столкнулись, связана с вашей первой строкой print(f.read()). Вызов f.read() извлекает все данные из файла, поэтому позиция чтения файла будет в конце. Следующий read ничего не вернет, потому что вы уже достигли конца файла.

Удаление строки должно исправить вашу проблему. Другим решением было бы добавить f.seek(0) перед var1=f.read(), что сбрасывает позицию чтения файла в начало файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...