首页 > 解决方案 > 我正在尝试打开一个文件,查找“r”或“R”作为每个单词的第一个字母,然后打印这些单词

问题描述

正如标题所说......这只是我正在做的一个练习,以便在 python 上做得更好。任何帮助将不胜感激

所以这就是我尝试过的......

read = open('file.txt', 'r')
t = read.read()
for i[0] in t:
    if i[0] == 'r' or 'R':
        print(i[0])

和...

read = open('file.txt', 'r')
t = read.read()
for i[0] in t:
    if i[0] == 'r' or 'R':
        print(i[0])

还...

编辑.......我已经能够找到带有'R'和'r'的单词,但现在我无法弄清楚如何打印包含'r'和'R'的单词

for i in t:
if i[0] == 'r' or i[0] == 'R':
        print(i)    

我尝试了各种类型的东西,这就是有效的。我什至尝试过:

if i[0] in ['r', 'R']

无论出于何种原因,它都不起作用。

任何打印这个词的帮助将不胜感激,因为我现在得到的只是

r R r r R

第一个我只是得到一个错误,说我没有定义。第二个只是打印出文档的每个单词

标签: python-3.xfilepycharm

解决方案


你这里有一大堆问题。

i未定义的例外是 from for i[0] in t:,您尝试将迭代中的值分配给某个i不存在的值的第一个元素。您可能只想要for i in t没有索引。

下一个问题是您正在迭代的内容。当您直接在类似 的字符串上进行迭代时t,您将分别获得每个字符。您不会将文本分成单词,我认为这就是您想要的。对真实文本进行标记有点棘手,但出于您的目的,您可以使用 with t.split(),它将字符串拆分为任何空格。

您的最后一个问题与使用or不正确有关,但看起来您可能已经修复了它们。无论如何,这是我对最终代码的建议(还有一些其他非必要的改进,比如更好的变量名和with关闭文件的语句):

with open('file.txt', 'r') as f:
    text = f.read()

for word in text.split():
    if word[0] in 'Rr':
        print(word)

推荐阅读