繁体   English   中英

连续标点和字母数字字符

[英]consecutive punctuation and alpha-numeric characters

可能是一个简单的问题,但是我没有太多的正则表达式经验。 我想取一个字符串并选择所有连续的标点字符和所有连续的字母数字字符

这是我所能接近的

r="my9zza :)asax"
import re
re.findall(r'(\w+)|([^a-zA-Z0-9\s]+)', r)

退货

[('my9zza', ''), ('', ':)'), ('asax', '')]

但我想

['my9zza', ':)', 'asax']

只需使用:

r = "my9zza :)asax"
import re
print(re.findall(r'\w+|[^a-zA-Z0-9\s]+', r))

问题是原始代码中有两组括号,导致findall返回2倍。

如果要保留原始的正则表达式,还可以使用以下方法轻松地将结果转换为所需的输出:

[x[0] or x[1] for x in result]

您可以尝试以下方法:

s = [('my9zza', ''), ('', ':)'), ('asax', '')]
final_s = [[b for b in i if b][0] for i in s]

输出:

['my9zza', ':)', 'asax']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM