“如何解决”显示返回值从一个Def到另一个“

时间:2018-12-25 07:00:16

标签: 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 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"
  }
]

1 个答案:

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