你的問題源於你迭代的x
沒有看到你所做的改變。
這有點像這樣:
x = 'lksjdfalkjdsflkajsdfkl\n\nkdfjsalsdjf'
y = x
for i in x:
if i=='\n':
cut = y.index(i)
y = y[cut+2:]
這是因爲如何str.__iter__
作品,以及因此,改變您對x
for循環中都沒有反映在for循環的未來迭代。
您可以用while循環,而不是解決這個問題:
i = 0
while < len(x):
if x[i] == '\n':
x = x[i+2 :]
i = -1
i += 1
這有點令人費解,因爲它似乎要找到'\n'
最後一次出現,並採取後,無論是2個字符。所以,你可以這樣做:
x = 'lksjdfalkjdsflkajsdfkl\n\nkdfjsalsdjf'
inds = []
for i,char in enumerate(x):
if char=='\n':
inds.append(i)
if not inds: # '\n' was nowhere in the string
x = x # we don't have to make any changes
else:
max_ind = max(inds)
x = x[max_ind+2 :]
現在,讓我們縮短這個:
x = 'lksjdfalkjdsflkajsdfkl\n\nkdfjsalsdjf'
inds = [i for i,char in enumerate(x) if char=='\n']
max_ind = max(inds)+2 if inds else -2
x = x[max_ind :]
或者:
x = 'lksjdfalkjdsflkajsdfkl\n\nkdfjsalsdjf'
try:
max_ind = x.rindex('\n')
x = x[max_ind+2 :]
except ValueError:
pass
是它失敗的第二個?您應該在其中添加一些打印語句,以便在腳本運行時查看這些值。 –
問題在於你正在迭代原來的'x',但在你的for循環中重複使用'x'。這裏是我會做的:'x = x [max([0] + [i + 2爲i,char枚舉(x)如果char =='\ n']):] – inspectorG4dget
你試過'x.replace ('\ n','')'? – Prabhakar