python中加载到DB的不可见unicode字符
有很多问题和解决办法,但似乎没有一个适合我。 我的问题是我正在读取一个带有字符串的文件,并将每一行加载到数据库中 在文件中,它看起来像普通文本,而在DB中,它是作为unicode空间读取的。我试着用一个空格和类似的选项来代替它,但都没有效果 例如,在文本文件中,字符串如下所示:python中加载到DB的不可见unicode字符,python,mysql,string,unicode,replace,Python,Mysql,String,Unicode,Replace,有很多问题和解决办法,但似乎没有一个适合我。 我的问题是我正在读取一个带有字符串的文件,并将每一行加载到数据库中 在文件中,它看起来像普通文本,而在DB中,它是作为unicode空间读取的。我试着用一个空格和类似的选项来代替它,但都没有效果 例如,在文本文件中,字符串如下所示: The abrupt departure 插入DB后,它看起来像: The abrupt departure "The abrupt\xc2\xa0departure" 当我尝试在DB中运行数据查询时,它看起来像
The abrupt departure
插入DB后,它看起来像:
The abrupt departure
"The abrupt\xc2\xa0departure"
当我尝试在DB中运行数据查询时,它看起来像:
The abrupt departure
"The abrupt\xc2\xa0departure"
我尝试了以下方法:
if "\xc2\xa0" in str:
str.replace('\xa0', ' ')
str.replace('\xc2', ' ')
print str
上面的代码正在打印字符串,如下所示:
The abrupt departure
但当插入回DB时,它仍然是一样的
感谢您的帮助。尝试以下方法:
这将删除Unicode
字符
>>> s = "The abrupt departure"
>>> s = s.decode('unicode_escape').encode('ascii','ignore')
>>> s
'The abrupt departure'
或者,
您可以尝试替换,就像您尝试过的那样。但您忘记了重新分配给同一个变量
>>> s = "The abrupt departure"
>>> s = s.replace('\xc2', '').replace('\xa0','')
>>> s
'The abrupt departure'
试试这个:
这将删除Unicode
字符
>>> s = "The abrupt departure"
>>> s = s.decode('unicode_escape').encode('ascii','ignore')
>>> s
'The abrupt departure'
或者,
您可以尝试替换,就像您尝试过的那样。但您忘记了重新分配给同一个变量
>>> s = "The abrupt departure"
>>> s = s.replace('\xc2', '').replace('\xa0','')
>>> s
'The abrupt departure'
关键是字符串是不可变的,您需要从
replace
分配返回值:
s = s.replace('\xa0', ' ')
s = s.replace('\xc2', ' ')
另外,不要使用
str
作为变量名。关键是字符串是不可变的,您需要从replace
分配返回值:
s = s.replace('\xa0', ' ')
s = s.replace('\xc2', ' ')
另外,不要将str
用作变量名。C2A0
是一个“不间断空格”“code>是您在字符集
设置不一致时看到的内容
做一个replace()
仅仅是掩盖了问题,当一个不同的有趣角色出现在你的桌子上时,这并没有帮助
由于您没有提供足够的信息来说明您所做的是正确的还是错误的,让我向您指出两个参考:
C2A0
是一个“不间断空间”“code>是您在字符集
设置不一致时看到的内容
做一个replace()
仅仅是掩盖了问题,当一个不同的有趣角色出现在你的桌子上时,这并没有帮助
由于您没有提供足够的信息来说明您所做的是正确的还是错误的,让我向您指出两个参考:
str.replace()
对字符串没有任何作用。str.replace()
对字符串没有任何作用。这很有效,但我得到的结果就像突然离开一样,中间没有空格。您使用的是哪种python版本?它是2.7,有关系吗?它的读取方式不像“突然离开”,而是这样“突然的\xc2\xA0离开”这很有效,但我得到的结果就像是没有空格的突然的离开。您使用的是哪一个python版本?它是2.7,有关系吗?它的阅读方式不像“突然的离开”,而是像这样的“突然的\xc2\xA0离开”