python删除中文unicode字符串之间的空格,但不删除英文单词之间的空格

时间:2017-03-30 13:45:27

标签: python regex string unicode

需要python正则表达式的帮助,我有一个包含中文和英文的字符串,我想删除中文字符之间的空格而不是英文单词之间。

来自 - " u' \ u5c0f \ u5973 \ u4eca \ u5e74 \ u4fc2 dse \ u8003 \ u751f \ u599 \ u559c \ u6b61 filmtv \ u524d \ u5e7e \ u65e5 in \ u5de6 buasso-filmtv and digital媒体研究\ u5df2 \ u7d93条件提供\ u4f46 \ u604f \ u5982 \ u679c通过jupas openu \ u6536 \ u5979 \ u8b80荣誉艺术学士在创意写作和电子表格"

to - " u' \ u5c0f \ u5973 \ u4eca \ u5e74 \ u4fc2 dse \ u8003 \ u751f \ u599 \ u559c \ u6b61 filmtv \ u524d \ u5e7e \ u65e5 in \ u5de6 buasso-filmtv and digital媒体研究\ u5df2 \ u7d93条件提供\ u4f46 \ u604f \ u5982 \ u679c通过jupas openu \ u6536 \ u5979 \ u8b80荣誉艺术学士在创意写作和电子表格"

仅在两个unicode字符之间删除空格

1 个答案:

答案 0 :(得分:4)

如果您对定义" unicode字符" as"非ASCII"然后你可以使用negative lookahead/lookbehind

执行此操作
re.sub("(?<![ -~]) (?![ -~])", "", text)

如果您不喜欢使用的范围([ - 〜]),那么this question has some alternatives。此外,有各种unicode categories可能会更好地满足您的目的,但据我所知,仍然需要手动定义字符范围,因为它们在re模块中不受支持。