开发者

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

开发者 https://www.devze.com 2022-12-11 03:22 出处:网络
I\'m trying to read a list of items from a text file and format with square brackets and separators like this: [\'item1\',\'item2\', .... \'last_item\']but I\'m having trouble with the beginning and e

I'm trying to read a list of items from a text file and format with square brackets and separators like this: ['item1','item2', .... 'last_item'] but I'm having trouble with the beginning and end item for which I always get: ...,'last_item','], so I do not want the last ,' to be there.

In python I've write:

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                        

I realize that this is a basic loop question, but I can't think of the best way to do it. Should I use a try final statement, should it be a while loop, or should I count the number of lines first and then use a loop with a range?

Help much appreciated.

Thanks, John


Read in all your lines and use the string.join() method to join them together.

lines = open(file_in).readlines()

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

Additionally, join() can take any sequence, so reading the lines isn't necessary. The above code can be simplified as:

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


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


You "right strip" for "," the result before adding the last "]".

e.g. use the string.rstrip(",")


Or

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


def do(filepath):
    out = []
    for line in open(filepath, 'r'):
        out.append("'" + line.strip() + "'")
    return out.__str__()


Your desired output format is exactly Python's standard printable representation of a list. So an easy solution is to read the file, create a list with each line as a string element (stripping the end-of-line of each), and call the Python built-in function repr to produce a string representation of the list:

>>> repr([line.rstrip() for line in open(file_in)])
"['item1', 'item2', 'item3']"
0

精彩评论

暂无评论...
验证码 换一张
取 消