【问题标题】:Removing quotes from a text file in python从python中的文本文件中删除引号
【发布时间】:2012-06-23 03:53:32
【问题描述】:

我必须从一个相对较大的文本文件中删除引号。我已经查看了可能与这个问题匹配的问题,但我仍然无法从文本文件的特定行中删除引号。

文件中的一小段如下所示:

1 - "C1".

E #1 - "C1".

2 - "C2".

1

2

E #2 - "C2".

我想要1-"C1"。替换为c1,E #1 - "C1" 替换为E c1。我尝试在 python 中替换这些,但由于双 "'s 出现错误。

我试过了:

input=open('file.text', 'r')
output=open(newfile.txt','w')
clean==input.read().replace("1 - "C1".","c1").replace("E #1 - "C1"."," E c1")
output.write(clean)

我有 sed:

sed 's\"//g'<'newfile.txt'>'outfile.txt'.

但又一个语法错误。

【问题讨论】:

  • 我首先尝试了从今天发布的另一个问题中学到的东西。
  • 哪个是 input=open('file.text', 'r')
  • 对不起,这个评论框在我身上弹出
  • 输出=open(newfile.txt','w')
  • 我建议您删除您的 cmets,并将信息移至问题。

标签: text python-3.x


【解决方案1】:

如果您确定要替换 literal,您只需要转义引号或使用单引号:replace('1 - "C1".', "c1") 等等(并更正几个语法错误) .但是,这仅适用于第一行,因此读取整个文件没有意义。做一个更聪明的工作,你可以使用re.sub:

with open('file.text') as input, open('newfile.txt','w') as output:
     for line in input:
         line = re.sub(r'^(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'c' + m.groups()[0], line)
         line = re.sub(r'^E #(?P<num>\d+) - "C(?P=num)".$',
                       lambda m: 'E c' + m.groups()[0], line)
         output.write(line)

在sed 命令中,您似乎试图简单地删除引号:

sed 's/"//g' newfile.txt > outfile.txt

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 2017-04-21
    • 1970-01-01
    • 2017-02-14
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多