所以,基本上我要做的就是从磁盘中读取一些文本并创建一系列打印语句,这些语句在执行时将重现已读入的文本。
例如,在我的文件中包含一行,如:
我说,“这是美好的一天。”
然后我的程序应该生成以下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")
这似乎适用于某些行但不适用于其他行。当我自己运行此代码时,它不适用于双引号。例如,它们没有被正确转义。任何建议将不胜感激。
答案 0 :(得分:7)
使用repr
获取正确的引用:
with open(filename) as r:
for line in r:
line = line.strip()
sys.stdout.write('print %s\n' % repr(line))
答案 1 :(得分:0)
而不是使用.encode('string-escape')
(因为这似乎只是逃脱了\
,为什么不能使用以下内容:
line.replace('"', r'\"')
然后,这将为您逃脱"
。
您也可能希望对'
执行相同的操作,因为它们也会创建字符串。