使用 Python 在字段中保留 CSV 逗号
Keep CSV commas inside fields with Python
我有很多自动生成的 CSV 文件,它们的结构都是这样的:
id,movie,actors
1,title1,actor1,actor2
2,title2,actor1,actor2
现在,当我尝试加载 Python 中的演员列时:
import csv
with open('file.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
actors = row['actors']
我为每一行设置了 actor1 和 actor2,但它们不再有逗号,所以我不能将它们拆分并视为 2 个不同的演员。不幸的是,我无法更改 CSV 中的字段分隔符,因为它是自动生成的。关于如何在字段数据中保留逗号有什么想法吗?
我会使用 maxsplit 参数按以下方式拆分:
with open('inputfile.txt') as f:
for line in f.readlines():
id, movie, actor_list = line.strip().split(maxsplit = 2)
actors = actor_list.split()
.... do something with id, movie, actors
您的 DictReader
只需要稍作不同配置,然后它就会按您的需要工作。根据上面的示例数据,csv 如下所示:
csv 文件内容
1,title1,actor1,actor2
2,title2,actor1,actor2
3,title3,actor1,actor2,actor3
以下应该有效...
with open('file.csv') as csvfile:
reader = csv.DictReader(csvfile, delimiter=",", fieldnames=["id","movie"], restkey="actors")
for row in reader:
actors = row['actors']
actors
将持有如下列表:
['actor1', 'actor2']
如果要留逗号:
print ",".join(actors)
然后您还可以访问其他两个字段,如下所示:
row['id']
row['movie']
我有很多自动生成的 CSV 文件,它们的结构都是这样的:
id,movie,actors
1,title1,actor1,actor2
2,title2,actor1,actor2
现在,当我尝试加载 Python 中的演员列时:
import csv
with open('file.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
actors = row['actors']
我为每一行设置了 actor1 和 actor2,但它们不再有逗号,所以我不能将它们拆分并视为 2 个不同的演员。不幸的是,我无法更改 CSV 中的字段分隔符,因为它是自动生成的。关于如何在字段数据中保留逗号有什么想法吗?
我会使用 maxsplit 参数按以下方式拆分:
with open('inputfile.txt') as f:
for line in f.readlines():
id, movie, actor_list = line.strip().split(maxsplit = 2)
actors = actor_list.split()
.... do something with id, movie, actors
您的 DictReader
只需要稍作不同配置,然后它就会按您的需要工作。根据上面的示例数据,csv 如下所示:
csv 文件内容
1,title1,actor1,actor2
2,title2,actor1,actor2
3,title3,actor1,actor2,actor3
以下应该有效...
with open('file.csv') as csvfile:
reader = csv.DictReader(csvfile, delimiter=",", fieldnames=["id","movie"], restkey="actors")
for row in reader:
actors = row['actors']
actors
将持有如下列表:
['actor1', 'actor2']
如果要留逗号:
print ",".join(actors)
然后您还可以访问其他两个字段,如下所示:
row['id']
row['movie']