在一个字符串中,我想只打印一个字母,如果它发生了2次,我尝试使用itertools,但如果写了4次,它只打印一个,我需要打印2。 例如:
input = rruunnnniinngg
output = running
谢谢你。
答案 0 :(得分:3)
使用re.sub()
函数(假设只有相邻的字符):
import re
s = 'rruunnnniinngg'
result = re.sub(r'(\S)\1', '\\1', s)
print(result)
输出:
running
(\S)
- 正则表达式捕获的包含单个非空白字符的组
\1
- 第一个捕获组的值(重复前一个字符)
答案 1 :(得分:0)
你可以试试这个:
from itertools import groupby
input1 = "rruunnnniinngg"
final_string = ''.join(map(lambda x: x[:(len(x)/2)], [''.join(list(b)) for a, b in groupby(input1)]))
输出:
'running'
答案 2 :(得分:0)
可以使用while循环简单地实现:
-adds输出字符串中的当前字符
- 检查天气,下一个字符与当前字符相同
- 如果是,则它通过增加1个单位的计数器来跳过下一个字符。
def func(s):
i=0
p=''
while(i<len(s)-1):
p+=s[i]
if(s[i+1]==s[i]):
i+=1
i+=1
return p