在Python中有没有一种方法可以获得以下输出?

2024-10-01 17:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

通过使用Python(主要是REGEX),我希望得到以下输出:

string = 'leelee'
result = [('l',1),('e',2),('l',1),('e',2)]

Tags: stringresultregexleelee
3条回答

您可以使用regex的帮助,但不能单独使用regex。你知道吗

首先按字符分组,然后列出理解以计算这些组中的元素。你知道吗

See code in use here

import re
s = 'leelee'
x = re.findall(r'(.)(\1*)',s)
print([[e[0],1+len(e[1])] for e in x])

上面的正则表达式捕获一个字符(.),然后如果紧跟其后的字符(\1*),则匹配该字符任意次数。你知道吗

你为什么需要正则表达式?Python的*是字符串乘法,+是字符串串联。例如:

print("h" * 5) # hhhhh
print("h" + "t") # ht

您可以使用regex和其他工具来实现这一点,但这并不理想。使用^{}要容易得多。你知道吗

from itertools import groupby
result = [(k, sum(1 for _ in g)) for k, g in groupby(string)]

这种获取迭代器长度的方法解释为here。你知道吗

相关问题 更多 >

    热门问题