我有一个以下格式的文本文件
"0ec62f05-3e87-4143-b417-1571d8634d07","""906823B1-F2D8-4C35-93FB-4C39CB01A8A8""","""Promo_1""",2015-08-27,2015-09-02,700302,,,,12.3.1.1,"""11802,11925,11368""",2017-27-01,"""""""
........
如何删除不必要的“”, 需要单身
答案 0 :(得分:4)
该行似乎符合引用的csv
格式。
对于你的系列,我明白了:
l = ['''"0ec62f05-3e87-4143-b417-1571d8634d07","""906823B1-F2D8-4C35-93FB-4C39CB01A8A8""","""Promo_1""",2015-08-27,2015-09-02,700302,,,,12.3.1.1,"""11802,11925,11368""",2017-27-01,"""""""''']
import csv
cr = csv.reader(l)
for row in cr:
print(row)
每个row
都是这样的列表:
['0ec62f05-3e87-4143-b417-1571d8634d07', '"906823B1-F2D8-4C35-93FB-4C39CB01A8A8"', '"Promo_1"', '2015-08-27', '2015-09-02', '700302', '', '', '', '12.3.1.1', '"11802,11925,11368"', '2017-27-01', '"""']
现在是常规文件:
import csv
with open("file.csv") as f:
cr = csv.reader(f)
for row in cr:
print(row)
删除不必要的引号,只需将row
替换为[x.strip('"') for x in row]
答案 1 :(得分:1)
阅读后这是一个非常原始的解决方案,但它简单易懂。
while(text.count('""')):
text = text.replace('""', '"')
答案 2 :(得分:1)
我用逗号分割行(遵循CSV约定),删除所有语音标记“” - 然后循环转动,将语音标记添加回CSV文件的每个元素。像这样......
string strippedLine = line.Replace("\"", "");
string[] row = strippedLine.Split(',');
string formattedRow = string.Empty;
string comma = string.Empty;
for (int i = 0; i <= row.Length; i++)
{
formattedRow += comma + "\"" + strippedLine + "\""; // <-- Rebuild the line here
comma = ",";
}
所以在最后,formattedRow将是你想要那条线的方式。
答案 3 :(得分:0)
是的,如果您在单引号内使用带双引号的string.replace,它们将被替换
oldstring = '"""906823B1-F2D8-4C35-93FB-4C39CB01A8A8"""'
newstring = oldstring.replace('"""', '"')
newstring将显示为"906823B1-F2D8-4C35-93FB-4C39CB01A8A8"