我嘗試了很多方法,但都沒有奏效。我不得不字串轉換一樣assdggg,以a2sd3gPython撰寫的。如果字母彼此相鄰,我們只留下一個字母,在它之前我們寫下它們彼此相鄰的程度。知道怎么做嗎?
uj5u.com熱心網友回復:
我建議itertools.groupby然后根據需要格式化
from itertools import groupby
# groupby("assdggg")
# {'a': ['a'], 's': ['s', 's'], 'd': ['d'], 'g': ['g', 'g', 'g']}
result = ""
for k, v in groupby("assdggg"):
count = len(list(v))
result = (str(count) if count > 1 else "") k
print(result) # a2sd3g
uj5u.com熱心網友回復:
您可以使用collections.Counter, then if count_of_char > 1set countelse 設定''如下:
>>> from collections import Counter
>>> st = 'assdggg'
>>> cnt_chr = Counter(st)
>>> cnt_chr
Counter({'a': 1, 's': 2, 'd': 1, 'g': 3})
>>> ''.join(f"{'' if cnt==1 else cnt}{c}" for c , cnt in cnt_chr.items())
'a2sd3g'
uj5u.com熱心網友回復:
嘗試使用.groupby():
from itertools import groupby
txt = "assdggg"
print(''.join(str(l) k if (l := len(list(g))) != 1 else k for k, g in groupby(txt)))
輸出 :
a2sd3g
uj5u.com熱心網友回復:
你可以試試這個:
string = 'assdggg'
compression = ''
for char in string :
if char not in compression :
if string.count(char) != 1 :
compression = str(string.count(char))
compression = char
print(compression)
#'a2sd3g'
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356553.html
