用空白值替换除第一个逗号之外的所有内容
replacing all but first commas with blank value
我有一个这种格式的 CSV:
A, Hello, my name is John, how are you?
B, Hello John, I'm doing well, thanks!
现在,CSV 显示第一个和第二个条目的四个值,因为它们都用逗号分隔。我的目标是让 CSV 为每个条目显示两个值,如下所示:
A, Hello my name is John how are you?
B, Hello John I'm doing well thanks!
我尝试了替换功能,但它会将每个逗号转换为 space。我想知道是否有这样的事情可以跳过第一个逗号并将每个逗号(第一个逗号之后)替换为“”。这是我目前所拥有的:
fin = open ('example.csv', 'r+')
fout = open ('newExample.csv', 'w')
reader = csv.reader(fin)
for line in reader:
for i in range(1, len(line)):
line[i].replace(',', '');
fout.write(line);
fin.close()
fout.close()
如果解决方案不遵循以下代码,我不介意,只要它产生所需的输出就可以了
提前致谢!
如果您已经使用 CSV 拆分了字段,那么您可以将第一个字段以“,”分隔,并加入其余字段,例如:
from io import StringIO
fin = StringIO("""A, Hello, my name is John, how are you?
B, Hello John, I'm doing well, thanks!""")
import csv
reader = csv.reader(fin)
for line in reader:
print(','.join([line[0], "".join(line[1:])]))
输出:
A, Hello my name is John how are you?
B, Hello John I'm doing well thanks!
>>> line = 'A, Hello, my name is John, how are you?'
>>> head, tail = line.split(',', 1)
>>> head
'A'
>>> tail
'Hello, my name is John, how are you?'
>>> tail.replace(',', ' ')
'Hello my name is John how are you?'
>>> ','.join([head, tail.replace(',', ' ')]))
'A, Hello my name is John how are you?'
这使用生成器而不是列表理解。它将行分成第一部分(包括第一个逗号),然后是该行的其余部分。根据您的需要,您可能需要 trim 第二部分以删除多余的 space。
fin = open('example.csv', 'r+')
reader = csv.reader(fin)
open('newExample2.csv', 'w')
with fout:
(fout.write(line[:line.find(',') + 1]
+ line[line.find(','):].replace(',', ""))
for line in reader)
fin.close()
检查第一个逗号的索引,然后用循环替换,从索引+1开始
我有一个这种格式的 CSV:
A, Hello, my name is John, how are you?
B, Hello John, I'm doing well, thanks!
现在,CSV 显示第一个和第二个条目的四个值,因为它们都用逗号分隔。我的目标是让 CSV 为每个条目显示两个值,如下所示:
A, Hello my name is John how are you?
B, Hello John I'm doing well thanks!
我尝试了替换功能,但它会将每个逗号转换为 space。我想知道是否有这样的事情可以跳过第一个逗号并将每个逗号(第一个逗号之后)替换为“”。这是我目前所拥有的:
fin = open ('example.csv', 'r+')
fout = open ('newExample.csv', 'w')
reader = csv.reader(fin)
for line in reader:
for i in range(1, len(line)):
line[i].replace(',', '');
fout.write(line);
fin.close()
fout.close()
如果解决方案不遵循以下代码,我不介意,只要它产生所需的输出就可以了
提前致谢!
如果您已经使用 CSV 拆分了字段,那么您可以将第一个字段以“,”分隔,并加入其余字段,例如:
from io import StringIO
fin = StringIO("""A, Hello, my name is John, how are you?
B, Hello John, I'm doing well, thanks!""")
import csv
reader = csv.reader(fin)
for line in reader:
print(','.join([line[0], "".join(line[1:])]))
输出:
A, Hello my name is John how are you?
B, Hello John I'm doing well thanks!
>>> line = 'A, Hello, my name is John, how are you?'
>>> head, tail = line.split(',', 1)
>>> head
'A'
>>> tail
'Hello, my name is John, how are you?'
>>> tail.replace(',', ' ')
'Hello my name is John how are you?'
>>> ','.join([head, tail.replace(',', ' ')]))
'A, Hello my name is John how are you?'
这使用生成器而不是列表理解。它将行分成第一部分(包括第一个逗号),然后是该行的其余部分。根据您的需要,您可能需要 trim 第二部分以删除多余的 space。
fin = open('example.csv', 'r+')
reader = csv.reader(fin)
open('newExample2.csv', 'w')
with fout:
(fout.write(line[:line.find(',') + 1]
+ line[line.find(','):].replace(',', ""))
for line in reader)
fin.close()
检查第一个逗号的索引,然后用循环替换,从索引+1开始