如何使用python删除字符串中的\ n和\ r \ n

时间:2016-06-12 17:49:37

标签: python

我编写了一个python(2.7)程序来从数据库中的表中检索数据并将其复制到csv文件中。有不可打印格式(unicode)的各种数据包含\ n,\ r \ n。由于\ n,\ r \ n我无法像在表格中那样检索数据。

我试过以下

str.replace('\n','').replace('\r',' ')
str.replace('\n','\\n').replace('\r', '\\r')

但是没有成功

csv代码

 cur.execute('select * from db.table_name)
with open('test.csv','w') as csv_file:
    csv_writer=csv.writer(csv_file)
    for row in cur:
        print "row = ", count
        count = count + 1
        newrow=[];
        for index in range(0, len(row)):
            value= row[index]
            if(type(row[index])is str):
                 value=row[index].replace("\n"," ").replace("\r"," ")
            newrow.append(value)
       csv_writer.writerow(newrow)

4 个答案:

答案 0 :(得分:2)

str.replace()返回一个新字符串,因此您必须将其分配给原始字符串才能更改它:

s = s.replace('\n','').replace('\r','')

答案 1 :(得分:2)

Unicode具有外部序列化表示,如UTF-8和UTF-16以及依赖于语言的内部实现,如WCHAR。您的数据库读取似乎已经为您提供了字符串的UTF-16序列化版本,您所要做的就是解码它。您当然不想删除\r\n,因为它们是多字节序列的一部分,而不是真正的回车或换行符。

作为一个简单的例子,我可以删除所有的数据库和循环内容,只使用你发布的字符串:

>>> value = '\r\xaeJ\x92>J\xe7\x1d\n\x89`\xc6\xf8\x9c<\x18'
>>> decoded = value.decode('UTF-16')
>>> print repr(decoded)
u'\uae0d\u924a\u4a3e\u1de7\u890a\uc660\u9cf8\u183c'
>>> print decoded
긍鉊䨾ᷧ褊왠鳸ᠼ
>>> 

答案 2 :(得分:1)

您可以使用正则表达式来简化代码:

例如:

import re
s = "Salut \n Comment ca va ?"
s = re.sub("\n|\r|\t", "",  s)

print(s)

输出将为:

  

Salut Comment ca va吗?

答案 3 :(得分:0)

您只需在输入末尾添加.strip()即可 例如:n = input()。strip() 它将删除字符串中的所有“ / r”