填写文件中的列表

时间:2014-11-30 12:31:56

标签: python string python-2.7

我有一个文件,其中包含用逗号分隔的单词,如:

tom,harry,ant,qqqq
aa,ww,rr,gg,aa,hh,ss

我想拆分用逗号分隔的每个元素,并填写如下列表:

array=['tom','harry','ant','qqqq','aa','ww','rr','gg','aa','hh','ss']

到目前为止,我尝试过:

array=list()

for i in open(filename):
    element = i.split(',',len(i))
    array.append(element)

当我打印时,我遇到两个问题:

for i in array 
    print i

我获得['tom','harry','ant','qqqq\n']['qqqq','aa','ww','rr','gg','aa','hh','ss\n']

我想避免使用\n并拥有一个如前所述的唯一列表

5 个答案:

答案 0 :(得分:5)

with open('myFile.txt', 'r') as myFile:
    array = myFile.read().replace('\n', ',').split(',')

for i in array:
    print i

一个班轮:

with open('myFile.txt', 'r') as myFile: array = myFile.read().replace('\n', ',').split(',')

在分配值时,您还应避免使用数组,列表等名称。这是不好的做法。

如果您有任何其他问题,请寄给我一个下午!

答案 1 :(得分:1)

您可以先删除该行以避开\n,然后使用extend代替append

for i in open(filename):
    line = i.strip()
    element = line.split(',')
    array.extend(element)

Extend用于将元素添加到数组中,而不是添加数组本身。结果将是:

['tom','harry','ant','qqqq','aa','ww','rr','gg','aa','hh','ss']

而不是:

[['tom','harry','ant','qqqq'], ['aa','ww','rr','gg','aa','hh','ss']]

答案 2 :(得分:1)

由于它看起来像逗号分隔文件,我建议您使用CSV module

import csv
with open('file') as f:
    csv_file = csv.reader(f)
    L = []
    for i in csv_file:
        L.append(i)
    print [i for j in L for i in j] 

输出:

['tom', 'harry', 'ant', 'qqqq', 'aa', 'ww', 'rr', 'gg', 'aa', 'hh', 'ss']

答案 3 :(得分:0)

使用换行符迭代文件产生线。明确地删除换行符:

替换以下行:

element = i.split(',',len(i))

使用:

element = i.rstrip().split(',',len(i))  # Remove trailing space charcters.

element = i.rstrip('\r\n').split(',',len(i))  # Remove CR / LF.

答案 4 :(得分:0)

您可以使用正则表达式:

>>> import re
>>> re.split(r"[,\n]+", open(filename).read())
['tom', 'harry', 'ant', 'qqqq', 'aa', 'ww', 'rr', 'gg', 'aa', 'hh', 'ss']