从不一致分隔的csv文件返回特定值

问题描述 投票:1回答:3

这个问题看起来很简单但是我几小时就堆叠在里面,这里看起来像我的数据:

\N
PARIS PREMIERE,1375,7
RTL9,1376,7
TV BREIZH,1162,7
C+ CINEMA,1594,7
\N
C+ SPORT,1595,7
OCS MAX,799,7

我想要的输出是:

1375
1376
1162
1594
1595
799

为此,我运行此代码:

    list_data = data.split('\n')
    for line in list_data:
        for s in line.split(','):
            params = s.split('\n')

但它似乎不起作用。如果您有任何想法我如何解决我的问题请帮助。谢谢!

python string python-3.x csv split
3个回答
1
投票
params = []
list_data = data.split('\n')
    for line in list_data:
        if len(line.split(',')) == 3
            params.append(line.split(',')[1])

1
投票

您可以过滤所有不需要的分隔符:

import csv
with open('filename.csv') as f:
  data = [int(i[-2]) for i in csv.reader(f) if len(i) > 1 or i[0] != '\\N']
  print(data)

输出:

[1375, 1376, 1162, 1594, 1595, 799]

0
投票

使用pandas返回所需列表的一种方法:

import pandas as pd
from io import StringIO

mystr = StringIO(r"""\N
PARIS PREMIERE,1375,7
RTL9,1376,7
TV BREIZH,1162,7
C+ CINEMA,1594,7
\N
C+ SPORT,1595,7
OCS MAX,799,7""")

df = pd.read_csv(mystr, header=None, delimiter='~')

res = df.loc[df[0] != r'\N', 0].str.split(',').str[-2].astype(int).tolist()

结果:

[1375, 1376, 1162, 1594, 1595, 799]

然后,您可以使用此列表执行您喜欢的操作,例如写入文件,在程序中的其他位置使用等。

© www.soinside.com 2019 - 2024. All rights reserved.