擅长:python、mysql、java
<p>如果您只想按拉丁字母表字符对输入中的字符进行分组,并分离出任何不相关的字符,那么使用<code>re.findall</code>和<code>([a-zA-Z]+|[^a-zA-Z])</code>模式将实现这一目标。这将查找任意一个或多个拉丁字母,或查找逆集合中的单个字符。例如:</p>
<pre><code>>>> import re
>>> re.findall('([a-zA-Z]+|[^a-zA-Z])', '江河i河流VNX')
['江', '河', 'i', '河', '流', 'VNX']
</code></pre>
<p>或者,如果您只想将CJK统一表意文字分离为各自的单个字符,并将其余字符保持为一个序列,请执行相反的操作:</p>
<pre><code>>>> re.findall(r'([\u4E00-\u9FFF]|[^\u4E00-\u9FFF]+)', '江河i河流VNX')
['江', '河', 'i', '河', '流', 'VNX']
</code></pre>
<p>本<a href="https://stackoverflow.com/questions/2718196/find-all-chinese-text-in-a-string-using-python-and-regex">related thread</a>对在字符串中查找中文文本进行了更广泛的讨论。在传递给<code>re.findall</code>的模式的范围表达式中,可以包括要分组或不分组的字符的其他范围</p>
<p>对于处理字符串列表,您可能希望将参数作为<code>''.join([<various strings>])</code>应用,并将该字符串传递给相关参数,或者如果输出需要不同,则将字符串的输入列表映射到<code>re.findall</code>(例如,使用列表理解),然后将它们<a href="https://stackoverflow.com/a/953097/">chain</a>放在一起</p>