0

所以,基本上我要做的是从磁盘中读取一些文本并创建一系列打印语句,执行时将重现读入的文本。

例如在我的文件中包含一行:

我说:“这是美好的一天。”

然后我的程序应该生成以下 python 代码作为输出:

print "I said, \"It\'s a nice day.\n\""

请注意,我并不是说它应该执行上面的代码。它应该只生成上述字符串。

我想出了以下代码,它适用于某些情况:

import sys
import re

filename = sys.argv[1]

infile = open(filename)

for line in infile:
    line = line.strip()
    line = line.encode('string-escape')
    sys.stdout.write("print \""+line+"\"\n")

这似乎适用于某些行,但不适用于其他行。当我自己运行此代码时,它不适用于双引号。例如,它们没有正确逃脱。任何意见,将不胜感激。

4

2 回答 2

7

用于repr获得正确的报价:

with open(filename) as r:
    for line in r:
        line = line.strip()
        sys.stdout.write('print %s\n' % repr(line))
于 2013-04-18T19:30:22.097 回答
0

而不是使用.encode('string-escape')(因为这似乎只是逃避\'s,为什么不使用以下内容:

line.replace('"', r'\"')

然后,这将为您逃脱那些"s。

您也可能希望对''s 做同样的事情,因为它们也会创建字符串。

于 2013-04-18T19:41:56.843 回答