如何在CSV字段内用空字符替换双引号内的双引号?

3

我有一个CSV文件,每个字段都用双引号括起来。但是某些字段/字符串本身就含有双引号,我想从该特定字符串中将其移除。

例如- CSV字段中的一个字符串是"My name is "Rajesh" Kumar"。

现在我想将上述字符串替换为"My name is Rajesh Kumar",保留外部双引号。

我尝试了下面的代码,但不幸的是它替换了所有双引号。

file_out = csv.writer(open("file", "w"), doublequote=False, escapechar='\\', delimiter=';',quotechar='"')
with open("file", "r") as f:
   content = f.read().replace('"', '')
   reader = csv.reader(StringIO(content), doublequote=False, escapechar='\\', delimiter=';'quotechar='"')
   for row in reader:
      print(row)
      file_out.writerow(row)

5
为什么不先替换所有内容,然后再在字段开头和结尾添加引号? - h4z3
谢谢,我试过了,它有效。 - tank
1个回答

0

您可以替换原始字符串中不包括第一个和最后一个字符的子字符串中的所有引号。

row = "\"My name is \"Rajesh\" Kumar\""
print(row)
row = row[0] + row[1:-1].replace('\"', '') + row[-1]
print(row)

或者

row = "\"My name is \"Rajesh\" Kumar\""
print(row)
row = "\"{}\"".format(row[1:-1].replace('\"', ''))
print(row)

输出:

"My name is "Rajesh" Kumar"
"My name is Rajesh Kumar"

发现另一篇帖子基本上涵盖了所询问的内容:正则表达式替换除第一个和最后一个字符之外的所有字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接