我正在尝试制作一个简单的脚本,用于搜索指定的 .txt 文件以查找以大写字母开头的最后一个单词并返回它。如果没有以大写字母开头的单词,则返回空字符串。
这是我目前尝试过的:
def find_last_capitalised(file_name):
with open(file_name) as wordfile:
text_str = wordfile.read()
word_list = text_str.split()
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for word in word_list:
if word.rfind(upper):
return word
else:
return " "
但这行不通。
我也试过这个:
with open(file_name) as wordfile:
text_str = wordfile.read()
word_list = text_str.split()
for word in word_list:
if word_list[-1].isupper():
return word_list[-1]
else:
return " "
有什么帮助吗?
请您参考如下方法:
其他人为您提供了完成任务的各种方法。我想解释一下为什么您的第一种方法无法按预期工作:
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if word.rfind(upper):
str 的
.rfind 方法正在寻找 word 中最后一个子字符串 ABCDEFGHIJKLMNOPQRSTUVWXYZ 的位置。我猜你的话不包含这样的子字符串,在这种情况下 .rfind 返回 -1,根据 Python 规则评估为 True (因为它不为零),所以它几乎可以捕获任何单词(它将给出 0 或 False 仅对于以 ABCDEFGHIJKLMNOPQRSTUVWXYZ 开头的单词仅包含单个 ABCDEFGHIJKLMNOPQRSTUVWXYZ)
