簡體   English   中英

基本的Python循環問題-從文本文件讀取列表的問題

[英]Basic Python loop question - problem reading a list from a text file

我正在嘗試從文本文件中讀取項目列表,並使用方括號和分隔符進行格式化,如下所示:['item1','item2',....'last_item']但我在開始時遇到了麻煩和我經常得到的結束項目:...,'last_item','],所以我不希望最后一個''在那兒。

在python中,我寫了:

out_list = "['"
for line in open(file_in):  
    out_list += line                #append the item to the list
    out_accession_list += "','"     #add the separator
out_accession_list += "]"           #add the final closed bracket
return out_list                        

我意識到這是一個基本的循環問題,但我想不出最好的方法。 我應該使用try final語句,應該是while循環,還是應該先計算行數,然后再使用帶范圍的循環?

幫助非常感謝。

謝謝,約翰

閱讀所有行,並使用string.join()方法將它們連接在一起。

lines = open(file_in).readlines()

out_list = "['" + "','".join(lines) + "']"

另外, join()可以采用任何順序,因此無需讀取行。 上面的代碼可以簡化為:

out_list = "['" + "','".join(open(file_in)) + "']"
out_list = []
for line in open(file_in):
    out_list.append("'" + line + "'")
return "[" + ",".join(out_list) + "]"

您在添加最后一個“]”之前將結果“”刪除“”。

例如使用string.rstrip(",")

要么

result = "['"
for line in open(file_in):
    if len(result) > 0:
        result += "','" 
    result += line
result += "']"
return result

您所需的輸出格式正是Python列表的標准可打印表示形式。 因此,一種簡單的解決方案是讀取文件,創建一個以每行作為字符串元素的列表(將每行的末尾剝去),然后調用Python內置函數repr來生成該列表的字符串表示形式:

>>> repr([line.rstrip() for line in open(file_in)])
"['item1', 'item2', 'item3']"
def do(filepath):
    out = []
    for line in open(filepath, 'r'):
        out.append("'" + line.strip() + "'")
    return out.__str__()

暫無
暫無

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

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