我有一个用户反馈表,其中包含“评论”列。
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)
答案 0 :(得分:0)
而不是使用str(RemoveSpecialChar)
,显式编码为ASCII并忽略任何非ASCII字符:
RemoveSpecialChar = RemoveSpecialChar.encode('ASCII', 'ignore').strip()
但您可能想问问自己为什么要首先将Unicode数据强制为字节串。
如果要替换数据库中的所有非ASCII字符,可以使用CONVERT()
强制数据仅为ASCII:
Update Feedback set COMMENTS=CONVERT(COMMENTS, 'US7ASCII')