Skip to main content
 首页 » 编程设计

python之关于字符串方法

2025年05月04日30qq号

我目前正在阅读使用 Python 自动化无聊的东西这本书,并在 chapter 7 上遇到了一个奇怪的问题. 尝试执行以下代码时:

def isPhoneNumber(text): 
    if len(text) != 12: 
        return False 
 
    for i in range(0, 3): 
        if not text[i].isdecimal(): 
            return False 
 
    if text[3] != "-": 
        return False 
 
    for i in range(4, 7): 
        if not text(i).isdecimal(): 
            return False 
 
    if text[7] != "-": 
        return False 
 
    for i in range(8, 12): 
        if not text[i].isdecimal(): 
            return False 
 
    return True 
 
 
print("415-555-4242 is a phone number:") 
print(isPhoneNumber("415-555-4242")) 
print("Moshi moshi is a phone number:") 
print(isPhoneNumber("Moshi moshi")) 

我收到以下错误消息:

Traceback (most recent call last): 
  File "automation.py", line 27, in <module> 
    print(isPhoneNumber("415-555-4242")) 
  File "automation.py", line 13, in isPhoneNumber 
    if not text(i).isdecimal(): 
TypeError: 'str' object is not callable 

将 str.isdecimal() 方法切换为 str.isdigit() 方法可以让我正确执行代码,但我想知道为什么 isdecimal() 方法不起作用?

请您参考如下方法:

该错误与 isdecimal() 无关。您从 text 中提取字符的方式有误。

if not text(i).isdecimal(): 

应该阅读

if not text[i].isdecimal(): 

(注意方括号。)