Преобразование строки в список в Python - PullRequest
10 голосов
/ 30 марта 2010

У меня есть текстовый документ, который содержит список чисел, и я хочу преобразовать его в список.Прямо сейчас я могу получить только весь список в 0-й записи списка, но я хочу, чтобы каждое число было элементом списка.Кто-нибудь знает простой способ сделать это в Python?

1000
2000
3000
4000

до

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

Ответы [ 5 ]

22 голосов
/ 30 марта 2010

Чтобы преобразовать строку Python в список, используйте метод str.split:

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

split имеет несколько параметров: найдите их для расширенного использования.

Вы также можете прочитать файл в список с помощью метода readlines() объекта файла - он возвращает список строк. Например, чтобы получить список целых чисел из этого файла, вы можете сделать:

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

P.S: Смотрите некоторые другие методы для того же самого в комментариях. Некоторые из этих методов лучше (более питонские), чем мои

1 голос
/ 31 марта 2010
   with open('file.txt', 'rb') as f:
       data = f.read()
   lines = [s.strip() for s in data.split('\n') if s]
1 голос
/ 30 марта 2010
    $ 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']
    >>> 
1 голос
/ 30 марта 2010
>>> 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']
0 голосов
/ 30 марта 2010

Возможно, вам придется удалить символы новой строки.

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

# list of integers
[int(number) for number in open("file.txt")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...