我有这个 Unicode 字符串:
my_string = "₁ᴀa̲a̲̲"
如何对其进行索引和切片以生成其他 Unicode 字符串?
如果我跑步
print([x for x in my_string])
['₁', 'ᴀ', 'a', '̲', 'a', '̲', '̲']
当我期待的时候
['₁', 'ᴀ', 'a', 'a̲', '̲a̲̲']
这个打印
my_string[3]
'̲'
当我期待的时候
a̲̲
我尝试定义
my_string = u"₁ᴀa̲a̲̲"
但是
u
被vscode自动删除了
我需要
my_string
作为缓冲区来根据他的人类可读索引组成其他字符串。
\X
模块中的 findall
正则表达式和
regex
:
import regex
out = regex.findall(r'\X', my_string)
输出:
['₁', 'ᴀ', 'a̲', 'a̲̲']
对
normalize
字符串的评论中表达的建议是最可行的;但是,您可能还想考虑 encoding
字符:
import unicodedata
for x in unicodedata.normalize('NFKD', my_string):
print("Normalized: " + x)
print("Encoded: " + x.encode('ascii', 'ignore').decode('ascii'))
您会看到差异:
Normalized: 1
Encoded: 1
Normalized: ᴀ
Encoded:
Normalized: a
Encoded: a
Normalized: ̲
Encoded:
Normalized: a
Encoded: a
Normalized: ̲
Encoded:
Normalized: ̲
Encoded: