如何从csv文件提取的字符串中删除变化的多个字符串

时间:2019-01-14 11:48:34

标签: python string list

我是编程新手,具有集成列表值的字符串。我试图隔离字符串中的数值,以便以后使用它们。

我试图拆分字符串,然后将其更改回列表并使用循环删除EU变量。初始定义将生成重复项的索引,并以我尝试更改的列表/字符串格式将其写入。

这是csv文件提取示例:

Country,Population,Number,code,area
,,,,
Canada,8822267,83858,EU15,central
Denmark,11413058,305010,EU6,west
Southafrica,705034,110912,EU6,south

我们正在尝试增加重复的欧盟号码人口。

def duplicates(listed, number):
    return [i for i,x in enumerate(listed) if x == number]

a=list((x, duplicates(EUlist, x)) for x in set(EUlist) if EUlist.count(x) > 1)
str1 = ''.join(str(e) for e in a)

for x in range (6,27):
    str2=str1.replace("EUx","")
    #split=str1.split("EUx")
#Here is where I tried to split it as a list. Changing str1 back to a list. str1= [x for x in split] 

这是代码产生的:

('EU6', [1, 9, 10, 14, 17, 19])('EU12', [21, 25])('EU25', [4, 5, 7, 12, 15, 16, 18, 20, 23, 24])('EU27', [2, 22])('EU9', [6, 13])('EU15', [0, 8, 26])

我试图隔离方括号中的数字,以便打印:

[1, 9, 10, 14, 17, 19]
[21, 25]
[4, 5, 7, 12, 15, 16, 18, 20, 23, 24]
[2, 22]
[6, 13]
[0, 8, 26]

这将允许我隔离索引以备将来使用。

2 个答案:

答案 0 :(得分:0)

我不确定没有示例数据,但我认为这可能会解决问题:

def duplicates(listed, number):
    return [i for i,x in enumerate(listed) if x == number]

a=list((x, duplicates(EUlist, x)) for x in set(EUlist) if EUlist.count(x) > 1)
for item in a:
    print(item[1])

至少我认为这应该打印出您在问题中要问的内容。

答案 1 :(得分:0)

或者,您可以使用pandas模块并保存一些键入内容。删除第二行的四个逗号,然后:

import pandas as pd
csvfile = r'C:\Test\pops.csv'
df = pd.read_csv(csvfile)
df.groupby('membership')['Population'].sum()

将输出:

membership
Brexit      662307
EU10         10868
EU12        569219
EU15       8976639
EU25      17495803
EU27        900255
EU28         41053
EU6       13694963
EU9         105449