我有一个文件,其中包含用逗号分隔的单词,如:
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
并拥有一个如前所述的唯一列表
答案 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']