我有幾個文本檔案,我想將它們合并到一個大字串中。文本檔案與我的 jupyter 筆記本檔案位于同一檔案夾中。我在網上找到了這個解決方案,但我無法正確理解它。它是這樣的:
def read_files_into_string(filenames):
strings = []
for filename in filenames:
with open(f'textfile_{filename}.txt') as f:
strings.append(f.read())
return '\n'.join(strings)
我知道我們首先定義函式,然后創建一個空字串檔案。在此之后,我們打開我們的文本檔案,比如說,textfile_1 到 textfile_10 作為 f(一個變數?),一個接一個地回圈。
現在到我不明白的部分:我們是否一個接一個地讀取檔案(f.read)并將其附加到字串檔案中?
但最讓我困惑的是最后的return陳述句:換行運算式'\n'有什么用?我的文本檔案以新行結尾 - 我們是否將單獨的“字串”與該字符粘合在一起?
uj5u.com熱心網友回復:
在這段代碼中,filenames是檔案名串列,strings是檔案內容陣列(所以不是最好的命名方式)。
當您迭代時,您將從串列filenames中選擇每個并打開一個名為usingfilenamefilenamestextfile_<filename>.txt
with open(..) as f:
那個結構叫做(synchronous) context manager. 使用它的要點是當發生例外時檔案將被安全關閉。因此,您正在迭代檔案,并且每次將檔案的內容添加到strings串列中
最后一件事是'<delimeter>'.join(iterable_str: typing.Iterable[str])。
這意味著join iterable of strings (e.g. list of strings) with <delimeter>, so it will return 1 string
所以
print('\n'.join(strings))
從字串中獲取所有字串并在它們之間用 '\n' 連接它們,然后列印結果字串
這可以這樣表示
print(strings[0] '\n' strings[1] '\n' ... '\n' strings(len(strings) - 1))
uj5u.com熱心網友回復:
我無法評論你的帖子,所以我在這里寫。我們定義一個空串列,然后我們將檔案添加到串列中,檔案之間用','分隔。喜歡
list_test = ['dsag','asdg','sdaga']
所以通過使用該join函式,我們將所有的文本檔案連接起來,輸出將連接起來,每個檔案都分隔成一個新行;如果你愿意,你可以改變它。例如,如果您希望它們粘在一起,可以使用以下命令。
''.join(list_test) # 'dsagasdgsdaga'
uj5u.com熱心網友回復:
我將嘗試回答您的每個問題:
- 我知道我們首先定義函式,然后創建一個空字串檔案。在此之后,我們打開我們的文本檔案,比如 textfile_1 到 textfile_10作為 f (a variable?),一個接一個地回圈。
是的,f是參考檔案的變數。這是關于背景關系管理器如何作業的一個很好的答案。
- 現在到我不明白的部分:我們是否一個接一個地讀取檔案(f.read)并將其附加到字串檔案中?
確切地說,您正在遍歷檔案。對于每個檔案,您將其內容 ( f.read()) 讀取為 astr并將該字串包含在strings串列中。
- 但最讓我困惑的是最后的return陳述句:換行運算式'\n'有什么用?我的文本檔案以新行結尾 - 我們是否將單獨的“字串”與該字符粘合在一起?
這行代碼只是獲取串列中的每個字串,并使用"\n"字串連接它們(Python 檔案 onstr.join(iterable))。"\n"是換行符,意思是這個字符的意思是“跳到下一行”。查看此問題及其答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/426024.html
下一篇:具有所有相同屬性的物件陣列
