我希望有一个简单的问题。我只是想弄清楚要使用的正确功能。我想用不同的变量替换重复的字符,具体取决于它连续重复的次数。
with open("text1.txt","r") as File: for line in File: Counting = line.count('a') if Counting == 1: Line1 = line.replace('a', '1') print(Line1) elif Counting == 2: Line1 = line.replace('aa', '2') print(Line1)
所以,如果'a'连续重复3次,我想用'aaa'替换为3,依此类推,直到9。问题是,无论是否连续,计算它们都是计数。如果我一次读取2个字符或3个字符的行,则将其删除。任何想法或帮助请。
答案 0 :(得分:0)
如果您想分析/替换连续的字母组,那么itertools.groupby可能会引起关注。下面的示例首先提取所有连续的组,然后检查特定组中的唯一元素是否为a
。如果是这样,它将用相应的元素数替换该组,否则,它保留原始输入。
from itertools import groupby
s = 'aaabaacdd' #test input
ret = ''
for k, v in groupby(s):
chunk = list(v)
cnt = len(chunk)
if k == 'a': #the condition can be extended here, e.g., k == 'a' and cnt <= 9
#substitute the group of 'a's with something else
#the substitution can take into account the number of consecutive
#'a's stored in the variable cnt
el = '%d' % (cnt)
else:
el = ''.join(chunk)
ret += el
print(ret)
产生
3b2cdd
答案 1 :(得分:0)
字符串的简单解决方案(一行)。您可以将其扩展为读取文件。
f = 'a b aa b aaa b'
output = f
for i in range(9,0,-1):
output = output.replace('a' * i, str(i))
print(output) # 1 b 2 b 3 b