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']"
精彩评论