在Python中将字符串转换为列表

时间:2010-03-30 13:11:45

标签: python

我有一个包含数字列表的文本文档,我想将其转换为列表。现在我只能在列表的第0个条目中获取整个列表,但我希望每个数字都是列表的元素。有没有人知道在Python中使用这种方法的简单方法?

1000
2000
3000
4000

['1000','2000','3000','4000']

5 个答案:

答案 0 :(得分:22)

要将Python字符串转换为列表,请使用str.split方法:

>>> '1000 2000 3000 4000'.split()
['1000', '2000', '3000', '4000']

split有一些选择:查找它们以获得高级用途。

您还可以使用文件对象的readlines()方法将文件读入列表 - 它返回行列表。例如,要从该文件中获取整数列表,您可以执行以下操作:

lst = map(int, open('filename.txt').readlines())

P.S:在评论中查看其他一些方法。其中一些方法比我的更好(更多Pythonic)

答案 1 :(得分:1)

>>> open("myfile.txt").readlines()
>>> lines = open("myfile.txt").readlines()
>>> lines
['1000\n', '2000\n', '3000\n', '4000\n']
>>> clean_lines = [x.strip() for x in lines]
>>> clean_lines
['1000', '2000', '3000', '4000']

或者,如果您已有字符串,请使用str.split

>>> myfile
'1000\n2000\n3000\n4000\n'
>>> myfile.splitlines()
['1000', '2000', '3000', '4000', '']

您可以使用列表推导(或只是常规for循环)删除空元素

>>> [x for x in myfile.splitlines() if x != ""]
['1000', '2000', '3000', '4000']

答案 2 :(得分:1)

    $ cat > t.txt
    1
    2
    3
    4
    ^D
    $ python
    Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
    [GCC 4.2.1 (Apple Inc. build 5646)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> l = [l.strip() for l in open('t.txt')]
    >>> l
    ['1', '2', '3', '4']
    >>> 

答案 3 :(得分:1)

   with open('file.txt', 'rb') as f:
       data = f.read()
   lines = [s.strip() for s in data.split('\n') if s]

答案 4 :(得分:0)

您可能需要删除换行符。

# list of strings
[number for number in open("file.txt")]

# list of integers
[int(number) for number in open("file.txt")]