Jon*_*mar 5 python regex string unicode python-2.7
Python2.7:我想做一些与众不同的事情.大多数人希望将字符串文字转换为更易读的字符串.我想将以下unicode字符串列表转换为它们的文字形式:
他们的代码点表单看起来像这样:
\ u3023\u2344
你会注意到freø̯̯nt在ø下面有两个倒置的短裤.我想特别将该单词转换为其字面形式,以便我可以使用REGEX来删除额外的短语.
我不确定这些东西的术语是什么 - 如果我弄错了,请纠正我.
\n\n\n您会注意到 fre\xc3\xb8\xcc\xaf\xcc\xafnt 在 \xc3\xb8 下方有两个倒置的短音符。我特别想将该单词转换为其字面形式,以便我可以使用 REGEX 删除多余的短音符。
\n
在这种情况下你不需要codecs.encode(unicode_string, \'unicode-escape\')。内存中没有字符串文字,只有字符串对象。
Unicode 字符串是 Python 中的 Unicode 代码点序列。可以使用不同的代码点来编写相同的用户感知字符,例如\'\xc3\x87\'可以写为u\'\\u00c7\'和 u\'\\u0043\\u0327\'。
您可以使用NFKDUnicode 规范化形式来确保“breves”是独立的,以便在重复时不会错过它们:
#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport re\nimport unicodedata\n\ns = u"fre\xc3\xb8\xcc\xaf\xcc\xafnt"\n# remove consecutive duplicate "breves"\nprint(re.sub(u\'\\u032f+\', u\'\\u032f\', unicodedata.normalize(\'NFKD\', s)))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n您能解释一下为什么您的 re.sub 命令没有任何 +1 来确保短字符是连续字符吗?(就像@Paulo Freitas的回答)
\n
re.sub(\'c+\', \'c\', text)确保文本中没有“cc”、“ccc”、“cccc”等。有时,正则表达式通过替换为 来完成不必要的\'c\'工作\'c\'。但结果是一样的:\'c\'文本中没有连续的重复项。
@Paulo Freitas 的答案中的正则表达式也应该有效:
\n\nno_duplicates = re.sub(u\'(\\u032f)\\\\1+\', r\'\\1\', unicodedata.normalize(\'NFKD\', s))\nRun Code Online (Sandbox Code Playgroud)\n\n它仅对重复项执行替换。您可以测量时间性能并查看哪个正则表达式运行得更快(如果它是应用程序中的瓶颈)。
\n| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |