Converting a string into a list in Python

后端 未结 5 825
孤独总比滥情好
孤独总比滥情好 2021-01-12 01:06

I have a text document that contains a list of numbers and I want to convert it to a list. Right now I can only get the entire list in the 0th entry of the list, but I want

相关标签:
5条回答
  • 2021-01-12 01:13
        $ 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']
        >>> 
    
    0 讨论(0)
  • 2021-01-12 01:13
       with open('file.txt', 'rb') as f:
           data = f.read()
       lines = [s.strip() for s in data.split('\n') if s]
    
    0 讨论(0)
  • 2021-01-12 01:15

    You might need to strip newlines.

    # list of strings
    [number for number in open("file.txt")]
    
    # list of integers
    [int(number) for number in open("file.txt")]
    
    0 讨论(0)
  • 2021-01-12 01:24
    >>> 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']
    

    Or, if you have a string already, use str.split:

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

    You can remove the empty element with a list comprehension (or just a regular for loop)

    >>> [x for x in myfile.splitlines() if x != ""]
    ['1000', '2000', '3000', '4000']
    
    0 讨论(0)
  • 2021-01-12 01:31

    To convert a Python string into a list use the str.split method:

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

    split has some options: look them up for advanced uses.

    You can also read the file into a list with the readlines() method of a file object - it returns a list of lines. For example, to get a list of integers from that file, you can do:

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

    P.S: See some other methods for doing the same in the comments. Some of those methods are nicer (more Pythonic) than mine

    0 讨论(0)
提交回复
热议问题