[英]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.