python子进程换行符被转义

python子进程换行符被转义,python,subprocess,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_na

我正在命令行中使用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"

\t\n\t\t如果打印整个序列对象,将打印
repr(列表对象)
。这就是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"
>>>

>>lst=['\t\n\t\t事实证明,为了使它们工作,我还需要对该字符串应用
unicode转义。
但是
unicode转义
通常不起作用

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

我能找到的最好的解决方案是在如果您执行
print(templates[idx])
时打印什么中描述的?该值在该点上已经转义,因此我猜测它必须是来自查询
[mysql'--默认字符集=utf8','-u',user'-h',host,dbname,“-e%s”%query的内容
你能展示一下制作
模板的代码吗?
基本上是标准的。这里有完整的代码和.decode('unicode\u escape'))它似乎能正确地解析新行,但不能转换字符,如
ńńńńń
您的字符串中似乎有实际的反斜杠,而不是在转义序列中仅用反斜杠表示的特殊字符。它可能在某个时候经历了额外的转义层。您需要弄清楚这是为什么这是在你的电脑上试用的代码