我怎样才能只提取值
我有以下代码:
data = []
with open('city.txt') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
data.append(row[3])
在列表后面附加以下内容(列表非常庞大):
[…….“‘id’:‘AX~仅限~Mariehamn’,‘id’:‘AX~仅限~salvik’,‘id’:‘AX~仅限~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循环语句中打印(行)时,我得到以下结果(这只是输出的最后一行):
["{'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'}}}"]
看起来
row[3]
是一个表示键、值对的字符串。我将进一步拆分它并仅选择值部分:
[2:-1]
是删除'
和一个空格这个答案假设您的输出是准确的,并且添加到列表中的每个值都沿着一个字符串
" 'id': 'AX~only~Mariehamn'"
的行这意味着在基本CSV文件中,id和值作为字符串一起存储。您可以通过各种字符串函数获得第二个值
上面的代码将字符串拆分为一个包含两部分的列表,一部分在冒号之前,另一部分在冒号之后:
[" 'id'", "'AX~only~Mariehamn'"
。然后,它获取第二个值并去除,得到一个干净的字符串相关问题 更多 >
编程相关推荐