无法使用下划线对 unicode 字符串进行切片/索引

问题描述 投票:0回答:2

我有这个 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
作为缓冲区来根据他的人类可读索引组成其他字符串。

python-3.x slice python-unicode
2个回答
1
投票

您可以使用

\X
模块中的
findall 正则表达式
regex

import regex

out = regex.findall(r'\X', my_string)

输出:

['₁', 'ᴀ', 'a̲', 'a̲̲']

0
投票

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: 
© www.soinside.com 2019 - 2024. All rights reserved.