将字段追加到列表中

2024-07-01 07:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能只提取值

我有以下代码:

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'}}}"] 

Tags: nameidcity列表typeaxmetaau
2条回答

看起来row[3]是一个表示键、值对的字符串。
我将进一步拆分它并仅选择值部分:

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

[2:-1]是删除'和一个空格

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

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

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

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

相关问题 更多 >

    热门问题