python子进程换行符被转义

时间:2014-08-09 11:30:53

标签: python subprocess

我使用subprocess.Popen

在命令行中运行mysql查询
process = subprocess.Popen(conarray, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

r = process.stdout.readlines()

stdout = [x.decode('utf8').rstrip() for x in r]

稍后我将输出写入文件

f = open(file_name, 'w+', encoding='utf8')
f.write(templates[idx])

它工作正常但由于某种原因所有新行(\ n)和制表符(\ t)都被转义。

\t<div id="container">\n\t\t<a name="top"

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

如果打印整个序列对象,则会打印repr(list_object)。这就是Python代表它的方式。

>>> lst = ['\t<div id="container">\n\t\t<a name="top"']
>>> print(lst)
['\t<div id="container">\n\t\t<a name="top"']
>>> print(lst[0])
        <div id="container">
                <a name="top"
>>>

答案 1 :(得分:1)

事实证明,为了使它们起作用,我还需要对该字符串应用unicode-escapeunicode-escape一般不起作用。

>>> s = 'naïve \\t test'
>>> print(s.encode('utf-8').decode('unicode_escape'))
naïve   test

this answer

中描述了我能找到的最佳解决方案