【问题标题】:python: write 'backslash double-quote' string into filepython:将“反斜杠双引号”字符串写入文件
【发布时间】:2017-04-07 07:30:38
【问题描述】:

我有一个输入文件,其中包含一些包含双引号的字符串,我想用 Python 生成一个 C 风格的头文件。

说,

input file: Hello "Bob"
output file: Hello \"Bob\"

我无法编写代码来获取这样的文件,这是我目前尝试过的:

key = 'key'
val = 'Hello "Bob"'
buf_list = list()
...
val = val.replace('"', b'\x5c\x22')
# also tried: val = val.replace('"', r'\"')
# also tried: val = val.replace('"', '\\"')
buf_list.append((key + '="' + val + '";\n').encode('utf-8'))
...
for keyval in buf_list:
    lang_file.write(keyval)
lang_file.close()

输出文件总是包含:

Hello \\\"Bob\\\"

\n\t 字符串写入输出文件没有问题。

看来我只能写零或两个反斜杠,有人可以帮忙吗?

【问题讨论】:

    标签: python string encoding


    【解决方案1】:

    您需要同时转义双引号和反斜杠。以下对我有用(使用 Python 2.7):

    with open('temp.txt', 'r') as f:
        data = f.read()
    
    with open('temp2.txt', 'w') as g:
        g.write(data.replace('\"', '\\\"'))
    

    【讨论】:

    • 谢谢,这行得通。但是,我必须写入文件的字符串类型类似于:key = "value with \quotes\"" 并且您的代码显然会产生:key = \"value with \quotes\"\" ...几乎就在那里 :)
    • @maestun 您需要进行某种预处理,以将您不想更改的引号与您想要更改的引号分开。
    【解决方案2】:

    在替换过程中应该将字符串转换为原始字符串。

    a='Hello "Bob"'
    print a.replace('"', r'\"')
    

    以上内容将为您提供: Hello \"Bob\"

    【讨论】:

    • 已经试过了,看我的代码。这将适用于“打印”功能,但不适用于写入文件。
    • @maestun - 在我这边工作得很好。
    • 试试这个:key = 'key'; val = 'Hello "Bob"'; buf_list = list(); val = val.replace('"', r'\"'); h=open('temp.txt','w'); h.write(val); h.close();
    • 确实!但是,请参阅我对@ason​​gtoruin 的回复
    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多