import string
english_chars = list(string.ascii_lowercase)
a = ['江河i河流VNX', 'ws', '上午好d']
b = [] # output list. Creating a separate one for now, but you could figure out a way to override it.
for series in a:
english_series = ""
for char in series:
if char.lower() in english_chars:
english_series += char
else:
if len(english_series) != 0:
b.append(english_series)
english_series = ""
b.append(char)
if len(english_series) != 0:
b.append(english_series)
您可以使用中文作为普通字符串遍历字符串。每个字符都可以单独编制索引
此解决方案适用于您的输入案例。这可能不是最有效的方法,但我认为它显示了总体思路
如果您只想按拉丁字母表字符对输入中的字符进行分组,并分离出任何不相关的字符,那么使用
re.findall
和([a-zA-Z]+|[^a-zA-Z])
模式将实现这一目标。这将查找任意一个或多个拉丁字母,或查找逆集合中的单个字符。例如:或者,如果您只想将CJK统一表意文字分离为各自的单个字符,并将其余字符保持为一个序列,请执行相反的操作:
本related thread对在字符串中查找中文文本进行了更广泛的讨论。在传递给
re.findall
的模式的范围表达式中,可以包括要分组或不分组的字符的其他范围对于处理字符串列表,您可能希望将参数作为
''.join([<various strings>])
应用,并将该字符串传递给相关参数,或者如果输出需要不同,则将字符串的输入列表映射到re.findall
(例如,使用列表理解),然后将它们chain放在一起相关问题 更多 >
编程相关推荐