首页 > 解决方案 > 将字段附加到列表

问题描述

我怎样才能只提取价值?

我有这个代码:

data = []
with open('city.txt') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    for row in readCSV:
        data.append(row[3])

将以下内容附加到列表中(列表很大):

[.......“'id':'AX~only~Mariehamn'”,“'id':'AX~only~Saltvik'”,“'id':'AX~only~Sund'”]

我怎样才能将键 'id' 的值附加到列表中?

我只想将其附加到列表中:AX~only~Saltvik等等?

city.txt 是包含以下内容的文件(90k 行文件):

{'name': 'Herat', 'displayName': 'Herat', 'meta': {'type': 'CITY'}, 'id': 'AF~HER~Herat', 'countryId': 'AF', 'countryName': 'AF', 'regionId': 'AF~HER', 'regionName': 'HER', 'latitude': 34.3482, 'longitude': 62.1997, 'links': {'self': {'path': '/api/netim/v1/cities/AF~HER~Herat'}}}
{'name': 'Kabul', 'displayName': 'Kabul', 'meta': {'type': 'CITY'}, 'id': 'AF~KAB~Kabul', 'countryId': 'AF', 'countryName': 'AF', 'regionId': 'AF~KAB', 'regionName': 'KAB', 'latitude': 34.5167, 'longitude': 69.1833, 'links': {'self': {'path': '/api/netim/v1/cities/AF~KAB~Kabul'}}}

so on ....

当我在 for 循环语句中打印(行)时,我得到以下内容(这只是输出的 las 行):

["{'name': 'Advancetown'", " 'displayName': 'Advancetown'", " 'meta': {'type': 'CITY'}", " 'id': 'AU~QLD~Advancetown'", " 'countryId': 'AU'", " 'countryName': 'AU'", " 'regionId': 'AU~QLD'", " 'regionName': 'QLD'^C: 152.7713", " 'links': {'self': {'path': '/api/netim/v1/cities/AU~QLD~Basin%20Pocket'}}}"] 

标签: python

解决方案


这个答案假设您的输出是准确的,并且附加到列表的每个值都沿着字符串的行," 'id': 'AX~only~Mariehamn'".

这意味着在基本 CSV 文件中,id 和 value 作为字符串一起存储。您可以通过各种字符串函数获取第二个值。

for row in readCSV:
    data.append(row[3].split(": ")[1].strip("'"))
    

上面的代码将字符串拆分为一个包含两部分的列表,一个在冒号之前,一个在冒号之后:[" 'id'", "'AX~only~Mariehamn'". 然后,它取第二个值并去掉 's,得到一个干净的字符串。


推荐阅读