Python 如何使用每行可变列处理CSV
我有一个文件,它的标题行有固定数量的标签和可变长度的行。最后一列有一个字段,该字段实际上应该是项的子列表,但此列表被视为列的连续体 例如:Python 如何使用每行可变列处理CSV,python,python-3.x,Python,Python 3.x,我有一个文件,它的标题行有固定数量的标签和可变长度的行。最后一列有一个字段,该字段实际上应该是项的子列表,但此列表被视为列的连续体 例如: Name, Address, Telephone "Bob Smith", "123 main st", "111-111-1111" "Jon Smith", "123 main st", "111-111-1111", "222-222-2222" 我最终希望遍历子列表,在本例中是电话 我尝试过使用csv dictreader,但它删除了额外的列 提前
Name, Address, Telephone
"Bob Smith", "123 main st", "111-111-1111"
"Jon Smith", "123 main st", "111-111-1111", "222-222-2222"
我最终希望遍历子列表,在本例中是电话
我尝试过使用csv dictreader,但它删除了额外的列
提前感谢。如您所见:
如果一行的字段数大于字段名
,则剩余的数据将放入列表中,并与restkey
指定的字段名一起存储(默认为无
)
您所要做的就是传递restkey
参数,所有额外的值都将进入该参数
with open('yourfile.csv') as f:
cf = csv.DictReader(f, restkey='extra')
for row in cf:
print(row)
将打印
{"Name": "Bob Smith", "Address": "123 main st", "Telephone": "111-111-1111"}
{"Name": "Jon Smith", "Address": "123 main st", "Telephone": "111-111-1111", "extra": ["222-222-2222"]}
如您所见:
如果一行的字段数大于字段名
,则剩余的数据将放入列表中,并与restkey
指定的字段名一起存储(默认为无
)
您所要做的就是传递restkey
参数,所有额外的值都将进入该参数
with open('yourfile.csv') as f:
cf = csv.DictReader(f, restkey='extra')
for row in cf:
print(row)
将打印
{"Name": "Bob Smith", "Address": "123 main st", "Telephone": "111-111-1111"}
{"Name": "Jon Smith", "Address": "123 main st", "Telephone": "111-111-1111", "extra": ["222-222-2222"]}
您不需要
读写器。使用标准的读取器
和元组分配语法:
代码:
test.csv:
Name,Address,Telephone
"Bob Smith","123 main st","111-111-1111"
"Jon Smith","123 main st","111-111-1111","222-222-2222"
输出:
name: Bob Smith
address: 123 main st
Phone #1: 111-111-1111
name: Jon Smith
address: 123 main st
Phone #1: 111-111-1111
Phone #2: 222-222-2222
您不需要读写器。使用标准的读取器
和元组分配语法:
代码:
test.csv:
Name,Address,Telephone
"Bob Smith","123 main st","111-111-1111"
"Jon Smith","123 main st","111-111-1111","222-222-2222"
输出:
name: Bob Smith
address: 123 main st
Phone #1: 111-111-1111
name: Jon Smith
address: 123 main st
Phone #1: 111-111-1111
Phone #2: 222-222-2222
发布代码以显示尝试总是很好的。Pandas有很棒的excel工具。请在值中使用其他分隔符,而不是逗号。一旦csv遇到逗号,它就会分裂。这就是它的工作方式!发布代码以显示尝试总是很好的。Pandas有很棒的excel工具。请在值中使用其他分隔符,而不是逗号。一旦csv遇到逗号,它就会分裂。这就是它的工作方式!这看起来很棒,但是我在星号*电话上遇到了一个错误。@yanir仅供参考我使用了Python3.6,但是我已经安装了Python3.3,它也有这个功能。我不确定它是什么时候添加的。@yanir描述了该功能,并在Python 3.0中实现了它。@yanir如果这让您感到困惑,您还需要Python 3.6作为示例中的功能。@MarkTolonen I使用的是2.7。我安装了3.7,现在可以使用了。谢谢这看起来很棒,但是我在星号*电话上遇到了一个错误。@yanir仅供参考我使用了Python3.6,但是我已经安装了Python3.3,它也有这个功能。我不确定它是什么时候添加的。@yanir描述了该功能,并在Python 3.0中实现了它。@yanir如果这让您感到困惑,您还需要Python 3.6作为示例中的功能。@MarkTolonen I使用的是2.7。我安装了3.7,现在可以使用了。谢谢