Python 3.x &引用;“如何修复”;显示从一个Def到另一个Def的返回值&引用;

Python 3.x &引用;“如何修复”;显示从一个Def到另一个Def的返回值&引用;,python-3.x,Python 3.x,我正在创建一个程序,从文本文件中提取句子,并从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 i

我正在创建一个程序,从文本文件中提取句子,并从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"
  }
]

首先,您需要了解json是如何工作的。因为我们正在读取一个文件,它被读取为一个字符串,所以我们 应该使用接受字符串的
json.loads
。另一个问题是
json.loads
需要一个完整的json字符串, 但是由于我们的json文件被分成了几行,所以我们需要找到一种方法将它们全部放在一个字符串中。 一个选项是
file.read().strip()
,它读取整个文件,然后删除行分隔符,如
\n
。 另一个选项是
“”.join(file.readlines())
,它将文件拆分成多行,然后以一个简单的方式连接它们 一串然后,在解析json之后,我们只需要逐行读取文本文件并迭代它们和 json中的值。以防文本文件中的一个城市像
LoNdOn
那样写,我正在使用
.lower()
转换它 到伦敦

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))

请在每个文件中写几行,以使您的问题更容易理解。您的
leh
函数没有解析整个文件。它在读了第一行之后返回。我需要解析整个文件数据。但是,不清楚你在问什么。。您所指的传递值是什么?您是要打印
store.txt
中的句子还是json文件中的值?我正试图从json中获取所有“名称”,并在文本文件中存储的句子中搜索它们。如果匹配,则执行一些操作。谢谢兄弟。用不同的方法解决了这个问题。但是你的代码比我的好得多,所以我要用这个。我希望这个代码在while循环中。因此,当它完成检查后,它应该再次读取文本文件。如果更改是在文件中完成的,我很高兴我提供了帮助:)您可以帮助循环和连续读取文件中的文本吗。我这边有一个错误。它实际上只不过是一个
,而True:
在读取文本文件上面。我建议你在写任何东西之前先学习python。