我现在有一个代码从.txt文件中获取一行,然后将其转换为一个列表,并删除空格。
看起来像这样:
fd = open(filename,'rU')
chars = []
for line in fd:
chars.append(line.strip())
return chars
输出如下:
['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']
我想在这里做的是将输出看起来像这样:
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T',] etc...]
我想将它们分成单个元素,但也要将它们保存在原始列表中。
答案 0 :(得分:4)
我不知道您为什么要这样做,因为您可以使用list
str
执行几乎所有操作 - 除了更改它。
假设你有充分的理由,你可能想把你的循环改为
for line in fd:
chars.append(list(line.strip()))
或循环之后,
chars = map(list, chars)
会这样做。它会在list
中的每个项目上运行chars
。
在Python 2上,它将从结果中生成list
。
在Python 3上,您需要执行
chars = list(map(list, chars))
或
chars = [list(sublist) for sublist in chars]
如果你想把它作为list-o-lists。
答案 1 :(得分:1)
a = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']
>>>
>>> b = [list(x) for x in a]
>>> b
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []]
>>>
答案 2 :(得分:0)
以下Python列表理解将解决您的问题:
lVals = [list(x.strip()) for x in open(filename,'rU').readlines()]
答案 3 :(得分:0)
>>> data = ['TTTTT', 'TTHHT', 'HHTHT', 'HHHHH', 'THTHT', '']
>>> map(list, data)
[['T', 'T', 'T', 'T', 'T'], ['T', 'T', 'H', 'H', 'T'], ['H', 'H', 'T', 'H', 'T'], ['H', 'H', 'H', 'H', 'H'], ['T', 'H', 'T', 'H', 'T'], []]
答案 4 :(得分:0)
如果你想要一个班轮
map(list, list(open('test.py')))
或
[list(a) for a in list( open('fileName.txt', 'rU') )]
但最好用两行来完成
fileHandler = open('file.txt')
fileData = map(list, list(fileHandler))