繁体   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