簡體   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