python - 将字段附加到列表
问题描述
我怎样才能只提取价值?
我有这个代码:
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'}}}"]
解决方案
这个答案假设您的输出是准确的,并且附加到列表的每个值都沿着字符串的行," 'id': 'AX~only~Mariehamn'"
.
这意味着在基本 CSV 文件中,id 和 value 作为字符串一起存储。您可以通过各种字符串函数获取第二个值。
for row in readCSV:
data.append(row[3].split(": ")[1].strip("'"))
上面的代码将字符串拆分为一个包含两部分的列表,一个在冒号之前,一个在冒号之后:[" 'id'", "'AX~only~Mariehamn'"
. 然后,它取第二个值并去掉 's,得到一个干净的字符串。