首页 > 解决方案 > 删除字符串中的文字无效 Unicode 字符

问题描述

我有一个字符串,由 UTF-8 解码,但包含无效的 unicode 字符。

string = '칼 마르크스 「자본론\udb82\udc55Ⅰ, 김수행 역 비봉출판사 108쪽―이하에서는 「자본론\udb82\udc55의 권수와 쪽수만 표기함―역자'

有没有办法使用正则表达式删除任何文字 unicode 字符?

我需要删除那些文字 unicode 字符。不要将它们解码成另一种形式。


如果我包含完整的文字 unicode 字符,我只能删除它们,但我无法删除任何文字 unicode 字符。

re.sub('\udb82', '', string )

'칼 마르크스 「자본론\udc55Ⅰ, 김수행 역 비봉출판사 108쪽―이하에서는 「자본론\udc55의 권숌와랐출판사


我知道可以使用encodeand替换文字 unicode 字符decode,但我正在寻找可以直接删除任何文字 unicode 字符的替代方法。

string.encode('utf-8', 'replace').decode('utf-8')

'칼 마르크스 「자본론??Ⅰ, 김수행 역 비봉출판사 108쪽―이하에서는 「자본론??의 권수와쪽수만항

标签: pythonregex

解决方案


您实际上可能不会摆弄正则表达式,而是选择:

string = '칼 마르크스 「자본론\udb82\udc55Ⅰ, 김수행 역 비봉출판사 108쪽―이하에서는 「자본론\udb82\udc55의 권수와 쪽수만 표기함―역자'

print(string.encode('utf-8', 'ignore').decode('utf-8'))

哪个产量

칼 마르크스 「자본론Ⅰ, 김수행 역 비봉출판사 108쪽―이하에서는 「자본론의 권수와 쪽수만 표기함―역자
#            ^^^ - it's gone!

推荐阅读