我正在尝试对文本文件中包含的信息进行分类,但是遇到一个奇怪的问题:我加载了文件,然后将信息放入变量(是字符串)中,并且尝试使用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。
谢谢。
答案 0 :(得分:3)
您面临的问题是由于您的第一行print(f.read())
。
调用f.read()
将从文件中提取所有数据,因此文件读取位置将在末尾。以下read
将不会返回任何内容,因为您已经到达文件末尾。
删除该行应该可以解决您的问题。
另一种解决方案是在f.seek(0)
之前添加var1=f.read()
,这会将文件读取位置重置为文件的开头。