0
我有一個帶有兩種位置的'string1':反向位置(由position = change標識)和直接位置(由position =標識)。爲了使自己清楚,例如letters = abcdef和position = change(1-4)。必須提取第一個和第四個間隙之間的字母bcd,並且字母c必須用數字1代替。由於不是這種情況的原因,在反向位置的情況下,字母c總是必須用數字1代替。在直接位置情況下,不執行更換。同時提取和替換字符串中的字母
我需要通過一個循環來做到這一點,我已經寫了我在這裏展示給你的代碼,但它不起作用。
string1='*This is an inverse position [position=change(1-4)]in a long sentence\n*This is a direct position [position=2-7] in a long sentence'
import re
a=re.finditer(r'(\*This).*\]', string1)
for element in a:
print element.group()
letters='abcdefghijklmno'
b=re.finditer(r'([0-9]+)-([0-9]+)', element.group())
for i in b:
if element.group().find('change'):
changedletters=letters[int(i.group(1)) : int(i.group(2))].replace('c', '1')
print element.group()+changedletters
else:
print letters[int(i.group(1)) : int(i.group(2))]
什麼不起作用?是否有錯誤消息?預期和實際結果是什麼? – Daniel
@Daniel當我運行這個代碼(並且在使用print時添加()括號)時,輸出是:'*這是一個反向位置[position = change(1-4)] *這是一個直接位置[position = 2-7] *這是一個直接的位置[position = 2-7] 1defg' – implicati0n
@Daniel結果(>>>表示新的一行,對不起,我不知道如何寫一個新行): > >> *這是一個反向位置[position = change(1-4)] >>> *這是一個直接位置[position = 2-7] >>> *這是一個直接位置[position = 2- 7] 1defg 和預期: >>> *這是一個反向位置[position = change(1-4)] b1d >>> *這是一個直接位置[position = 2-7] cdefg 它讀取只有最後一個聲明而不是整個循環(不會讀取反向位置的情況),並且它也將字母c替換爲直接位置中的數字1(當它不應該這樣做時)。沒有錯誤消息。 – Dang