在Python中搜索已加载的文件

时间:2018-09-07 14:17:29

标签: python string find

我正在尝试对文本文件中包含的信息进行分类,但是遇到一个奇怪的问题:我加载了文件,然后将信息放入变量(是字符串)中,并且尝试使用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 :(得分:3)

您面临的问题是由于您的第一行print(f.read())。 调用f.read()将从文件中提取所有数据,因此文件读取位置将在末尾。以下read将不会返回任何内容,因为您已经到达文件末尾。

删除该行应该可以解决您的问题。 另一种解决方案是在f.seek(0)之前添加var1=f.read(),这会将文件读取位置重置为文件的开头。