UnicodeEncodeError:替换或删除unicode字符#34; \ u2019"来自数据库表

时间:2014-11-11 18:26:34

标签: python oracle unicode

我有一个用户反馈表,其中包含“评论”列。

python代码清理反馈表中的comments列。 这是清理前预处理评论的例子。

Update Feedback set COMMENTS=Replace (COMMENTS,'%','PCT')
Update Feedback set COMMENTS=Replace (COMMENTS,'"','_')
Update Feedback set COMMENTS=Replace (COMMENTS,'','_')

环境: Oracle 11g,Python 2.7,mx_Oracle-5.1.2

收到以下错误的python代码:

如何从Oracle数据库的comments列中替换/删除u“\ u2019”?

欣赏任何意见?

Process Process-1:
Traceback (most recent call last):
  File "C:\Python27\ArcGIS10.1\lib\multiprocessing\process.py", line 258, in _bootstrap
    self.run()

  File "C:\Python27\ArcGIS10.1\lib\multiprocessing\process.py", line 114, in run
    self._target(*self._args, **self._kwargs)

  File "C:\test\Python\Cleanse_multiprocessing_1.py", line 1086, in Worker
  RemoveSpecialChar = str(RemoveSpecialChar).strip()

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 112: ordinal not in range(128)

1 个答案:

答案 0 :(得分:0)

而不是使用str(RemoveSpecialChar),显式编码为ASCII并忽略任何非ASCII字符:

RemoveSpecialChar = RemoveSpecialChar.encode('ASCII', 'ignore').strip()

但您可能想问问自己为什么要首先将Unicode数据强制为字节串。

如果要替换数据库中的所有非ASCII字符,可以使用CONVERT()强制数据仅为ASCII:

Update Feedback set COMMENTS=CONVERT(COMMENTS, 'US7ASCII')