如何拆分列表元素?

时间:2015-05-14 14:14:51

标签: python python-3.x

我必须从文件中读取到2D列表中。 该文件看起来像:

  

杰克32   佩里12
  蒂姆14

当我打印列表时,它看起来像:

['Jack 32', 'Perry 12', 'Tim 14']

但我需要它看起来像:

['Jack', '32', 'Perry', '12', 'Tim', '14']

到目前为止,我的代码看起来像这样:

with open('filelocation', 'r') as f:
    content = f.readlines()
    content = [x.strip('\n') for x in content]
    print(content)

8 个答案:

答案 0 :(得分:3)

难道你不能把整个文件拆分成空格吗?

>>> with open('filelocation') as f:
        print(f.read().split())

['Jack', '32', 'Perry', '12', 'Tim', '14']

没有必要创建结构只是为了将它弄平。

答案 1 :(得分:1)

使用空格作为分隔符(默认),为['Jack 32', 'Perry 12', 'Tim 14']中的每个元素拆分字符串。

迭代结果列表以使其变平。

mylist = ['Jack 32', 'Perry 12', 'Tim 14']
my_new_list = []
for l in mylist:
    my_new_list.extend(l.split())

或者,您可以使用生成器

答案 2 :(得分:1)

你应该能够以字符串形式阅读并在空格上分割。

with open('filelocation') as f:
    split_up = f.read().split()

答案 3 :(得分:1)

试试这样:

my_list = []
with open('your_file') as f:
    for x in f:
        my_list += x.strip().split()

答案 4 :(得分:0)

我认为如果你把列表中的内容拿回来并把它拆分成白色空间,它会给你你想要的东西。

https://docs.python.org/2/library/stdtypes.html#str.split

答案 5 :(得分:0)

可能有一个比这个简单的方法

 In [46]: a=['Jack 32', 'Perry 12', 'Tim 14']

In [47]: b=[i.split() for i in a ]
In [49]: b
Out[49]: [['Jack', '32'], ['Perry', '12'], ['Tim', '14']]

In [50]: [item for sublist in b for item in sublist]
Out[50]: ['Jack', '32', 'Perry', '12', 'Tim', '14']

答案 6 :(得分:0)

分割每一行后,您可以使用itertools.chain链接元素:

from itertools import chain
with open('filepath') as f:
    content = list(chain.from_iterable(x.split() for x in f))
    print(content)
['Jack', '32', 'Perry', '12', 'Tim', '14']

您无需调用.readlines,您可以遍历文件对象fline.strip("\n")只是剥离换行符,你实际上并没有拆分。如果您在每一行上调用split,您最终会得到一个列表,例如[['Jack', '32'], ['Perry', '12'], ['Tim', '14']]chain.from_iterable将每个子列表中的元素链接到一个列表中。

.readlines一次将所有行读入内存,对于小文件无关紧要,但如果您有大文件或受限内存,则应避免调用.read.readlines

答案 7 :(得分:0)

为什么不将文件流式传输到新行之间有空格的字符串中,然后用空格分割?

无论如何,您要做的就是按空间划分。

我知道这不是“最性感”的答案,但对你的用例来说可能是最直接的。