我的脚本是从csv文件中读取数据,csv文件可以有多个英文或非英文字串。
有时文本文件中有垃圾字符串,我想识别这些字符串并跳过这些字符串并处理其他字符串
doc = codecs.open(input_text_file, "rb",'utf_8_sig')
fob = csv.DictReader(doc)
for row, entry in enumerate(f):
if is_valid_unicode_str(row['Name']):
process_futher
def is_valid_unicode_str(value):
try:
function
return True
except UnicodeEncodeError:
return false
csv 输入:
"Name"
"袋è¢âdcx€¹Ã¤Â¸Å½Ã¦Å“‹å‹们çâ€ÂµÃ¥ÂÂå•â€"
"元大寶來證券"
"John Dove"
我想 defile 函数 is_valid_unicode_str() ,它将识别垃圾字符串并只处理有效字符串。
我尝试使用 decode is 但它在解码垃圾字符串时没有失败
value.decode('utf8')
The expected output are string with Chinese and English string to be process
能否指导我如何实现过滤有效 Unicode 文件的功能?
最佳答案
(此处为 ftfy 开发人员)
我发现文字很可能是'袋袋与 friend 们电子商'。我不得不猜测“友”、“子”和“商”这些字符,因为一些不可打印的字符是您问题中的字符串中缺少的字符。猜的时候,我从少量的可能性中挑选了最常见的字符。而且我不知道“dcx”去了哪里,也不知道它为什么在那里。
谷歌翻译在这里不是很有用,但它似乎与电子商务有关。
所以这里是你的文本发生的一切:
- 它被编码为 UTF-8 并错误地解码为 sloppy-windows-1252,两次
- 它在 UTF-8 序列的中间插入了字母“dcx”
- windows-1252 中不存在的字符——字节值为 81、8d、8f、90 和 9d——已被删除
- 从末尾删除了一个不间断空格(字节值 a0)
如果只发生第一个问题,ftfy.fix_text_encoding
将能够修复它。剩余的问题可能只是在您尝试将字符串放到 Stack Overflow 上时发生的。
所以这是我的建议:
- 找出谁一直将数据错误地解码为 sloppy-windows-1252,并让他们将其解码为 UTF-8。
- 如果您再次遇到这样的字符串,请在其上尝试
ftfy.fix_text_encoding
。
关于python - 使用python识别垃圾unicode字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29071995/