因此,我的解釋者抱怨IndexError: Replacement index 1 out of range for positional args tuple
在特定情況下呼叫 re.group(#) 或 re.groups() 時。它旨在回傳電話號碼,例如 1 (555) 555-5555
這是使用的正則運算式,因為它在其他地方宣告:
self.phoneRegex = re.compile(r'(\ \d) (\(\d\d\d\)) (\d\d\d)(\d\d\d\d)')
這是導致問題的代碼:
for cell in self.cells:
if ' 1' in cell.text:
print(self.pmo.groups()) #Works fine
print("{} {} {}-{}".format(self.pmo.groups())) #Errors out.
print("{} {} {}-{}".format(self.pmo.group(1), self.pmo.group(2),self.pmo.group(3), self.pmo.group(4))) #Also errors out.
if isinstance(self.cursor(row=self.data['lst_row'], column=self.telCol).value, type(None)):
self.cursor(row=self.data['lst_row'], column=self.telCol).value = "{} {};".format("{} {} {}-{}".format(self.pmo.group(2), self.pmo.group(2),self.pmo.group(3), self.pmo.group(4)))
完整追溯:
Traceback (most recent call last):
File "F:\Documents\Programs\Python\E45 Contact Info Puller\main.py", line 289, in run
print("{} {} {}-{}".format(self.pmo.groups()))
IndexError: Replacement index 1 out of range for positional args tuple
uj5u.com熱心網友回復:
你有這一string.format
行:
print("{} {} {}-{}".format(self.pmo.groups()))
re
匹配組是元組,所以在這里,您有 4 個格式替換,但是您嘗試傳遞一個元組(每個正則運算式包含 4 個匹配項)而不是 4 個單獨的格式化引數。
您需要為字串格式解包(或 splat)元組 - 請注意*
之前添加的self.pmo.groups()
.
print("{} {} {}-{}".format(*self.pmo.groups()))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494629.html