我正在创建一个程序,以从文本文件中提取句子,并从JSON文件中匹配城市名称。匹配不起作用,我无法传递返回值。
我尝试过先做简单而不创建类,并与静态城市进行核对。
import json
with open("store.txt", "r+") as g, open("city.json") as c:
dat1 = json.load(c)
dat = g.readlines()
# print(dat)
# def hel():
# for items1 in dat1:
# gat = items1.get("name")
# print(gat)
class One:
def __init__(self):
self.dat = dat
self.dat1 = dat1
def leh(self):
for items in self.dat:
# print(items)
# for hy in items:
return items
def main(self):
returned = test_obj.leh()
print(returned)
# for items1 in self.dat1:
# gat = items1.get("name")
# if gat in returned:
# print("Got it")
if __name__ == '__main__':
test_obj = One()
test_obj.main()
我希望传递的值可以打印和匹配城市名称与存储在文本文件中的句子。
store.txt中的行:
“德里是一个美丽的城市。” “伦敦很好。”
city.json中的行:
[
{
"id": 1,
"name": "Surat",
"country": "IN"
},
{
"id": 1259229,
"name": "London",
"country": "GB"
},
{
"id": 1273294,
"name": "Delhi",
"country": "IN"
}
]
答案 0 :(得分:1)
首先,您需要了解json的工作原理。由于我们正在读取一个作为字符串读取的文件,因此我们
应该使用json.loads
接受字符串。另一个问题是json.loads
在json中需要一个完整的字符串,
但是由于我们的json文件分为几行,因此我们需要找到一种将所有内容组合到一个字符串中的方法。
一个选项是file.read().strip()
,它将读取整个文件,然后删除诸如\n
之类的行分隔符。
另一个选择是"".join(file.readlines())
,它将文件分成几行,然后将它们连接到
串。然后,在解析json之后,我们只需要逐行读取文本文件并遍历它们和
json中的值。万一文本文件中的城市写成LoNdOn
,我正在使用.lower()
进行转换
到london
。
import json
with open("city.json") as json_file:
parsed = json.loads(json_file.read().strip())
with open("store.txt") as text_file:
sentences = text_file.readlines()
for element in parsed:
for sentence in sentences:
if element['name'].lower() in sentence.lower():
print("{} was found!".format(element))