2024-06-28 20:17:26 发布
网友
例如
“jhdkksdksjdsggg”变为“\u ksd_s”
有没有办法用一个下划线来替换大写的簇?在
强制性非正则表达式解决方案:
>>> from itertools import groupby >>> s = "JHDKFksdKSJDsGGGG" >>> ''.join('_' if k else ''.join(g) for k,g in groupby(s, str.isupper)) '_ksd_s_'
groupby如果iterable的连续元素具有相同的值,则将它们组合在一起,在这种情况下,由keyfunctionstr.isupper指定。低,groupby产生
groupby
str.isupper
然后我们相应地更换或离开。在
>>> import re >>> re.sub("[A-Z]+", "_", "JHDKFksdKSJDsGGGG") '_ksd_s_'
[A-Z]表示匹配A-Z范围内的任何字符。+表示匹配前面的一个或多个表达式。在
[A-Z]
+
您可以使用re模块:
re
import re s = 'JHDKFksdKSJDsGGGG' print re.sub('[A-Z]+','_',s)
基本上,它所做的是用下划线(第二个参数)替换大写的集群([A-Z]+部分)。在
[A-Z]+
[A-Z]匹配从A到{}的任何大写字符,+表示您希望至少有一个字符匹配(您不想用下划线替换空字符串)。在
A
因此,[A-Z]+一起匹配一组大写字母。在
所以re.sub所做的是它接受3个参数(pattern、replacement和string)。它遍历字符串,寻找与模式匹配的内容(在本例中:看起来像一组大写字符),并用替换字符串替换这些组。在
re.sub
强制性非正则表达式解决方案:
^{pr2}$groupby
如果iterable的连续元素具有相同的值,则将它们组合在一起,在这种情况下,由keyfunctionstr.isupper
指定。低,groupby
产生然后我们相应地更换或离开。在
[A-Z]
表示匹配A-Z范围内的任何字符。+
表示匹配前面的一个或多个表达式。在您可以使用
re
模块:基本上,它所做的是用下划线(第二个参数)替换大写的集群(
[A-Z]+
部分)。在[A-Z]
匹配从A
到{+
表示您希望至少有一个字符匹配(您不想用下划线替换空字符串)。在因此,
[A-Z]+
一起匹配一组大写字母。在所以
re.sub
所做的是它接受3个参数(pattern、replacement和string)。它遍历字符串,寻找与模式匹配的内容(在本例中:看起来像一组大写字符),并用替换字符串替换这些组。在相关问题 更多 >
编程相关推荐