#python #python-3.x #string #list #text-files
#python #python-3.x #строка #Список #текстовые файлы
Вопрос:
В моем текстовом файле есть следующие данные:
5*0 4 3 2 5 7 7 3 6 3 2 6
8*2 4 5 6 7 8 7 3 7 7 3
Я хочу работать с данными на python. итак, я предположил, что лучше преобразовать его в строку или список.
Я использовал следующий код:
a = open('test.txt', 'r')
b = a.readlines()
c = [x.replace('n','') for x in b]
print(c)
но это дает:
['5*0 4 3 2 5 7 7 3 6 3 2 6 ', ' 8*2 4 5 6 7 8 7 3 7 7 3']
Мне было интересно узнать, как я могу преобразовать его в следующее:
['5*0', '4', '3', '2', '5', '7', '7', '3', '6', '3', '2', '6', '8*2', '4', '5', '6', '7', '8', '7', '3', '7', '7', '3']
Комментарии:
1. Почему не просто
a.read().split()
?
Ответ №1:
попробуйте это
a = open('test.txt', 'r')
b = a.readlines()
new_list = []
for line in b:
for item in line.strip().split():
new_list.append(item)
print(new_list)
Ответ №2:
Я бы просто изменил с readlines
помощью read
метода (не разбивает строки на разные элементы списка), затем изменил 'n'
символ новой строки на пробелы и, наконец, разделил строку на пробелы.
a = open('test.txt', 'r')
b = a.read()
c = b.replace('n', ' ').strip().split(' ')
a.close()
print(c)
Я бы предложил использовать with
инструкцию, чтобы не забыть закрыть файл
with open('test.txt', 'r') as a:
b = a.read()
c = b.replace('n', ' ').strip().split(' ')
print(c)
Комментарии:
1. спасибо за ваш ответ. Я тестировал этот, проблема в том, что он генерирует пустой элемент ‘ ‘ при удалении ‘ n’ [‘5*0’, ‘4’, ‘3’, ‘2’, ‘5’, ‘7’, ‘7’, ‘3’, ‘6’, ‘3’, ‘2’, ‘6’, «, «, ‘8*2’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘7’, ‘3’, ‘7’, ‘7’, ‘3’]
Ответ №3:
вы можете сделать так
c=['5*0 4 3 2 5 7 7 3 6 3 2 6 ', ' 8*2 4 5 6 7 8 7 3 7 7 3']
c=[j for i in c for j in i.split()]
print(c)
вывод
['5*0', '4', '3', '2', '5', '7', '7', '3', '6', '3', '2', '6', '8*2', '4', '5', '6', '7', '8', '7', '3', '7', '7', '3']
Комментарии:
1. спасибо за ваш ответ, да, это сработало хорошо. Спасибо
Ответ №4:
Я преобразую это в сжатие списка и отредактирую сообщение, но здесь оно без
a = open('test.txt', 'r')
b = a.readlines()
c = [a for n in str(b).split('n') for a in n.split(' ') if a != '']
print(c)
>>> ['5*0', '4', '3', '2', '5', '7', '7', '3', '6', '3', '2', '6', '8*2', '4', '5', '6', '7', '8', '7', '3', '7', '7', '3']
Комментарии:
1. спасибо за ваш ответ, этот выдает мне эту ошибку: объект ‘list’ не имеет атрибута ‘split’
2. попробуйте сейчас, нужно преобразовать его в строку
Ответ №5:
with open('test.txt') as file:
print(file.read().split())
Я использовал with
метод для открытия и чтения файла вместе с .read()
методом, который считывает весь файл вместо одной строки за раз, затем .split()
метод разбивает строку на каждую ' '
, возвращая список.