如何從后面為每個 n 索引插入'#'?
例如)n = 4我
evil = '01234567891234oooooooooooooooo321'
嘗試
stan = '0#1234#5678#9123#4ooo#oooo#oooo#oooo#o321'
使用帶有 for,if 陳述句的串列,卡住了。像這樣可恥的事情
a = 1234567891234
b = [ a[-i] for i in range(1,len(a) 1)]
for i in range(len(b)):
c = b[i]
if i%4==0: #stuck
c = ','
c.reverse()
什么是最佳方式?
uj5u.com熱心網友回復:
將字串切成塊(向后),然后使用分隔符連接它們
evil = '01234567891234oooooooooooooooo321'
l = 4
sep = '#'
sep.join([evil[max(i-l,0):i] for i in range(len(evil), 0, -l)][::-1])
'0#1234#5678#9123#4ooo#oooo#oooo#oooo#o321'
uj5u.com熱心網友回復:
您可能會使用一個模式來斷言右側 4 個字符的可選重復,并將該位置替換為#
import re
pattern = r"(?=(?:.{4})*$)"
s = "01234567891234oooooooooooooooo321"
print(re.sub(pattern, "#", s))
輸出
0#1234#5678#9123#4ooo#oooo#oooo#oooo#o321#
Python 演示
uj5u.com熱心網友回復:
chunks像這個答案一樣起作用
def chunks(lst, n):
"""Yield successive n-sized chunks from lst."""
for i in range(0, len(lst), n):
yield lst[i:i n]
evil = '01234567891234oooooooooooooooo321'
n = 4
stan = "#".join(chunks(evil[::-1], n))[::-1]
print(stan) # Output: 0#1234#5678#9123#4ooo#oooo#oooo#oooo#o321
輸入字串被反轉([::-1]),分成塊,用“#”連接,然后再次反轉回來。(如果您計算第一組字符中有多少個字符,則可以跳過反向)
uj5u.com熱心網友回復:
一個天真的解決方案是使用部分evil字串:
evil = '01234567891234oooooooooooooooo321'
n = 4
start = len(evil) % n
insert = '#'
stan = evil[:start] insert
for i in range(start, len(evil) - n, n):
stan = evil[i:i n] insert
stan = evil[-n:]
uj5u.com熱心網友回復:
為此,我將evil通過反轉字串并在 for 回圈中迭代它來向后遍歷您的字串。然后我設定一個計數變數來跟蹤它完成了多少次回圈,并在它等于 4 時重置為 0。所有這些如下所示:
count = 0
for char in evil[::-1]:
if count == 4:
count = 0
count = 1
然后您可以建立一個新的空new_str字串evil(完整代碼:
count = 0
new_str = ''
for char in evil[::-1]:
if count == 4:
new_str = '#'
count = 0
count = 1
new_str = char
這將產生反轉的新字串,因此您需要再次反轉它以獲得所需的結果:
new_str = new_str[::-1]
輸出:
'123o#oooo#oooo#oooo#ooo4#3219#8765#4321#0'
uj5u.com熱心網友回復:
你可以這樣做:
evil = '01234567891234oooooooooooooooo321'
''.join(j if i%4 else f'#{j}' for i, j in enumerate(evil[::-1]))[::-1][:-1]
輸出:
'0#1234#5678#9123#4ooo#oooo#oooo#oooo#o321'
uj5u.com熱心網友回復:
一種精確的方法:用于divmod獲取字串在分割成大小為 4 的“塊”然后切片時的提示和商。
evil = '01234567891234oooooooooooooooo321'
size = 4
q, r = divmod(len(evil), size)
sep = '#'
stan = f"{evil[:r]}{sep}{sep.join(evil[r i*size: r (i 1)*size] for i in range(q))}"
print(stan)
備注:如果字串的長度是塊大小的倍數,則新字串將以sep. 自解釋湖以來假定為默認行為
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467307.html
上一篇:將字串決議為列
