繁体   English   中英

AttributeError: '_io.TextIOWrapper' 对象没有 txt 文件的属性 'lower'

[英]AttributeError: '_io.TextIOWrapper' object has no attribute 'lower' for txt file

这是我的代码(来自文本文件的猪拉丁语翻译器):

f = open('Assignment_4.txt', 'r+')

for line in f:
    print(line)

def pigLatin():
    var = 'ay'
    wordL = f.lower()
    firstLetter = wordL[0]
    pigLatin = wordL + firstLetter + var
    pigLatin = pigLatin[1:]
    print(pigLatin)

它适用于定义的字符串,但不适用于文件。 帮助表示赞赏!

积分:

  • lower()适用于字符串。 您正在尝试与文件句柄f一起使用。 这就是您收到此错误的原因。
  • 此外,在逐行读取文件后,您应该为每一行调用pigLatin()pigLatin(line) 所以,现在, pigLatin() 函数需要一个参数。
  • 另外,在最后关闭文件f.close() 如果您使用with语句打开文件,它将是。

带有内联注释的代码:

def pigLatin(stuff_to_be_changed):
    var = 'ay'
    wordL = stuff_to_be_changed.lower()
    firstLetter = wordL[0]
    pigLatin = wordL + firstLetter + var
    pigLatin = pigLatin[1:]
    print(pigLatin)


#For string

string =  "I am to change"
#Call function
pigLatin(string)

f = open('Assignment_4.txt', 'r+')

#For file
for line in f:
    print(line)
    #Call function
    pigLatin(line)

#Close the file
f.close()

错误是正确的 - 文件对象没有lower()方法 - 在您可以使用您的函数之前,您需要从文件中read一行文本并将其split为单独的单词。 (请注意,对变量和方法使用相同的名称从来都不是一个好主意,因为这会导致混淆。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM