Как создать новый список всех слов, разделенных каждым словом и каждой строкой?

#python #python-3.x #string #list

Вопрос:

У меня есть текстовый файл в виде :

sample.txt

 Hi I am student
I am from 
 

То, что я пробовал, это

 import string
import re

def read_to_list1(filepath):
    text_as_string = open(filepath, 'r').read()
    x = re.sub('[' string.punctuation ']', '', text_as_string).split("n")
    
    for i in x:
        x_as_string = re.sub('[' string.punctuation ']', '', i).split()
        print(x_as_string)

read_to_list1('sample.txt')
 

Это приводит к

 ['Hi,'I','am','student']
['I','am','from']
 

Я хочу, чтобы результат был таким:

 [['Hi,'I','am','student'],['I','am','from']]
 

Комментарии:

1. В чем дело со всеми этими string.punctuation манипуляциями? Можете ли вы показать пример того, с чем вы пытаетесь справиться в этих случаях?

Ответ №1:

После открытия файла вы можете использовать понимание списка для перебора строк и для каждой строки str.split с пробелами, чтобы получить маркеры для каждого подсписка.

 def read_to_list1(filepath):
    with open(filepath, 'r') as f_in:
        return [line.split() for line in f_in]
 

Ответ №2:

Для конкретного примера sample.txt, это также должно сработать:

 import string
import re

def read_to_list1(filepath):
    text_as_string = open(filepath, 'r').read()
    x = re.sub('[' string.punctuation ']', '', text_as_string).split("n")
    final_array=[]
    for i in x:
        x_as_string = re.sub('[' string.punctuation ']', '', i).split()
        final_array.append(x_as_string)
    return final_array    
print(read_to_list1('sample.txt'))