首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python组导致索引错误

Python组导致索引错误
EN

Stack Overflow用户
提问于 2022-06-21 15:11:11
回答 1查看 52关注 0票数 1

因此,在特定情况下调用re.group(#)或re.groups()时,我的干扰者都在抱怨re.group。它意味着返回一个电话号码,例如+1 (555) 555-5555。

下面是在其他地方声明的正则表达式:

代码语言:javascript
复制
self.phoneRegex = re.compile(r'(\+\d) (\(\d\d\d\)) (\d\d\d)(\d\d\d\d)')

造成这些问题的代码如下:

代码语言:javascript
复制
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)))

全面回溯:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-21 15:28:11

您有这样的string.format行:

代码语言:javascript
复制
print("{} {} {}-{}".format(self.pmo.groups())) 

re匹配组是元组,因此这里有4个格式替换,但是您试图传递一个元组(每个正则表达式包含4个匹配项),而不是4个单独的格式化参数。

您需要为字符串格式解压缩(或拆分)元组-注意在*之前添加的self.pmo.groups()

代码语言:javascript
复制
print("{} {} {}-{}".format(*self.pmo.groups())) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72703215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档