使用“”解析.txt文件

时间:2017-02-01 13:27:39

标签: python parsing

我有一个以下格式的文本文件

"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,"""""""
........

如何删除不必要的“”, 需要单身

4 个答案:

答案 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"