#python #list #formatting #strip
#python #Список #форматирование #Стриптиз
Вопрос:
Итак, я преобразовал каждую строку в текстовом файле в элемент списка, выполнив следующее: chkseq=[line.strip() for line in open("sequence.txt")]
Поэтому, когда я печатаю chkseq, я получаю это:
['3','3']
Я бы хотел, чтобы вместо этого он выглядел так:
[3,3]
Я знаю, что это возможно, я просто не уверен, как! Мне нужно, чтобы они были промежуточными, а не строками. Итак, если все остальное не удается, это моя главная цель в этом: создать список из файла .txt, члены которого являются промежуточными (который будет содержать весь файл .txt).
Спасибо!! -OSFTW
Ответ №1:
Похоже, вы хотите интерпретировать строки как целые числа. Используйте int
для этого:
chkseq = [int(line) for line in open("sequence.txt")]
Он также может быть написан с использованием map
вместо понимания списка:
chkseq = map(int, open("sequence.txt"))
Комментарии:
1. Это именно то, что мне было нужно, спасибо! Будет выбрано в качестве ответа через 8 минут временного окна 🙂
Ответ №2:
выполните итерацию по элементам вашего списка и распечатайте их с вашим предпочтительным форматированием, а не полагаться на форматирование по умолчанию при печати всего списка сразу.
Ответ №3:
Допустим, ваш массив называется input, и вы хотите сохранить значение в массиве с именем chkseq, ваш код будет:
chkseq = [int(i) for i in input]
Или, если вы хотите сделать все в одной строке:
chkseq = [int(i.strip()) for i in open("sequence.txt")]
Комментарии:
1.
in
является ключевым словом — невозможно вызвать массивin
!2. да, я заметил это и исправил это сразу после отправки ответа.
Ответ №4:
Передача строки в int
конструктор попытается превратить ее в int
.
>>> int('3')
3
>>> int('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'foo'