[英]How to read csv field with comma and split string in the field to a list?
我正在尝试读取 csv 并将一些带有分隔符的输出字符串拆分为一个列表,但是当我尝试使用数组读取列表时,它抛出错误,提示“列表索引超出范围”。 该列表应该有 2 个元素。 请参阅附加代码。 请帮助我指出代码有什么问题。 索引 0 工作得很好。
csv 文件如下所示:ID、全名、姓氏
1、约翰·史密斯《史密斯·乔恩》
2、卡米尔约翰逊《约翰逊卡米尔》
3、棒东,“咚,砰”
4、查尔斯·辛普森《辛普森,查尔斯》
import csv
with open('testfile.csv', 'r', newline='') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
# print(row)
# print (row[2])
a = row[2].split(sep=", ")
print(a[1])
你可以试试这个:
import pandas as pd
df = pd.read_csv('testfile.csv')
这会将您的 csv 文件读入数据框中,您可以访问列并将它们转换为如下列表:
df['Full Name'].tolist()
问题是您使用“,”作为分隔符,但您的“姓氏”列也包含逗号。
在这行代码中:
a = row[2].split(sep=", ")
您试图将名字与姓氏分开,并假设它返回一个您试图在此处显示的元组:print(a[1])
问题是 a 不会是元组,因为此列内有逗号。 相反,会有一行 [3],在您的情况下,“Smith”将在行 [2] 中,而“John”将在行 [3] 中。 为避免这种情况,请使用不同的分隔符。
使用与我使用 csv 编码相同的方式使用 Pandas 效果很好。 谢谢纳撒尼尔。
import pandas as pd
df = pd.read_csv('testfile.csv')
a = df['Last First Name'].tolist()
for row in a:
b = row.split(', ')
print(b[1])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.