Python 在列数不一致的csv文件中循环

Python 在列数不一致的csv文件中循环,python,csv,for-loop,Python,Csv,For Loop,我试图找出如何循环遍历列数不一致的csv文件,然后将数据从列[0]配对到列[1],从列[0]配对到列[2],依此类推 CSV示例: ID, Value1, Value2, Value3, Value4 1, alfred, enrique, mark 2, robert, james 3, mike, jack, todd, buddy 写入.txt文件的预期输出: 1 + alfred 1 + enrique 1 + mark 2 + robert 2 + james 3 + mike 3

我试图找出如何循环遍历列数不一致的csv文件,然后将数据从列[0]配对到列[1],从列[0]配对到列[2],依此类推

CSV示例:

ID, Value1, Value2, Value3, Value4
1, alfred, enrique, mark
2, robert, james
3, mike, jack, todd, buddy
写入.txt文件的预期输出:

1 + alfred
1 + enrique
1 + mark
2 + robert 
2 + james
3 + mike
3 + jack
3 + todd
3 + buddy

想到的第一个解决方案是在excel中用“abc”填充所有没有文本的值,然后在为预期输出进行加法时,在写入.txt文件之前删除其中带有“abc”的任何行,但我认为这不是最好的方法…

您可以使用
pandas
。它通过指定
NaN
值自动解决空列值:

import pandas as pd

df = pd.read_csv('csvfile.csv')
df = df.set_index('ID').stack().reset_index(level=0, name='value').reset_index(drop=True) # stack the columns
df.to_csv('filename.txt', index=False, header=False, sep='+') # save as csv (txt) file with + as delimiter to achieve the desired output

您可以使用标准库csv文件读取器:

具体来说,它说:

如果一行的字段数多于字段名,则剩余的数据将放在列表中,并使用restkey指定的字段名(默认为无)存储。如果非空行的字段数少于字段名,则缺少的值将用restval值(默认为无)填充


然后在列上循环时,如果值为None,则跳过。

csv.reader
可以很好地处理不同的行。我让你来处理这些线

导入csv
将open('input.csv',换行符='')作为f:
r=csv.reader(f,skipinitialspace=True)
对于r中的行:
打印(行)
['ID','Value1','Value2','Value3','Value4']
['1','alfred','enrique','mark']
['2'、'罗伯特'、'詹姆斯']
['3','mike','jack','todd','buddy']

您是否费心阅读该模块的文档?有几个选项可用于处理缺少值的行。堆栈溢出不是用来取代现有的教程或文档,也不是为您完成研究、设计或编码工作的地方。如果您使用
DictReader
。常规
csv.reader
只会在您迭代行时为您提供一个大小不同的列表。谢谢。很抱歉,我在帖子中没有提供上下文。我已经在使用csv文件阅读器了。我在寻找一种有说服力的方法来生成一些字符串(如果存在值)。最后我使用if语句检查字符串是否存在。