簡體   English   中英

為什么打印文件中所有單詞的代碼無法正常工作?

[英]Why won't this code that prints of all words from a file work?

我不想一次打印文件的所有內容,因為稍后會收集這些單詞。 這是我的代碼在這里:

file = open('file analysis.txt', 'r')
chars = ''
for line in file:
    for ch in file:
        chars = chars + ch
        if ch == ' ':
            print(chars)
file.close()

將在學校待幾個小時,因此可能不會立即回答問題。

您幾乎完全正確,如果要遍歷文件的各行,然后遍歷一行中的每個字符,請將您的第二個for更改for for ch in line:

正如kuro在評論中提到的那樣,您當前僅在遇到空格字符時才打印已讀單詞,而不是在換行符上打印。 現在print工作方式是在每個空格之后打印所有已讀單詞,因此示例輸出可能如下所示:

Lorem 
Lorem ipsum 
Lorem ipsum dolor 
Lorem ipsum dolor sit 
Lorem ipsum dolor sit amet, 
Lorem ipsum dolor sit amet, consetetur 
Lorem ipsum dolor sit amet, consetetur sadipscing 

如果您只想打印遇到的每個新單詞,則可能要在打印后重設chars = '' 要取消每個單詞后的換行符,可以使用print(chars, end='')

with語句中打開文件也更安全,這樣將為您處理關閉文件。

然后您的代碼可能如下所示:

with open('file analysis.txt', 'r') as file:
    chars = ''
    for line in file:
        for ch in line:
            chars = chars + ch
            if ch == ' ':
                print(chars, end='')
                chars = ''

這將給出以下輸出:

Lorem ipsum dolor sit amet, consetetur sadipscing

請注意,您僅在空格上打印,因此當您的最后一個單詞后沒有空格時,它將被讀取但不會被打印。

一些東西。

首先 ,應該使用file.open()file.close()代替

with open('file analysis.txt', 'r') as f:

它會自動為您關閉文件。 此外 ,您應該for ch in line:使用for ch in line:而不是for ch in file:使用for ch in line: for ch in file:因為您要打印該行中的每個字符,而不是文件中的每一行兩次。 另外 ,您希望在每次打印后將chars變量重置為空字符串,因此您不必多次打印相同的單詞。 最后 ,默認情況下,python的print()函數將在每個print語句之后創建一個換行符。 您可以通過執行print(string, end='')來避免這種情況,該方法用空字符串替換行尾字符。

考慮到所有這些,您的代碼將變為:

with open('file analysis.txt', 'r') as f:
chars = ''
for line in f:
    for ch in line:
        chars += ch
        if ch == ' ':
            print(chars, end='')
            chars = ''

如果您想了解有關print(string, end='')函數的更多信息,請查找位置參數與關鍵字參數 。有關with .. as語句的更多信息,請參見此處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM