Преобразование текстового файла в строку или список

#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() метод разбивает строку на каждую ' ' , возвращая список.