我目前正在阅读使用 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():
(注意方括号。)
