работа с несколькими текстовыми файлами в Python

#python #text #nlp

#python #текст #nlp

Вопрос:

Я впервые имею дело с более чем одним файлом неструктурированных данных, и мне нужно знать, является ли то, что я делаю, наилучшим подходом или есть что-то лучше.

У меня есть более 1000 текстовых файлов для разных романов, содержащих текст до 139965 или более. и я прочитал их и сохранил в фрейме данных, как показано ниже:

 file_list = glob.glob("C:/.../TextFiles/*.txt")
data = pd.DataFrame({'Name':[],'Content':[]})

for file in file_list:
    with open(file, 'r',encoding="utf8", errors='ignore') as myfile:
        new_name=os.path.splitext(file)[0]
        data=data.append({'Name':re.sub(".*\\", " ",new_name), 'Content': myfile.read()},ignore_index=True)
     
  

затем я начал очищать тексты, переходя строка за строкой.

 data['Name'] = data['Name'].apply(lambda x: " ".join(x.split()))
  

как вы думаете, это лучший подход к работе с несколькими и большими текстовыми файлами путем сохранения их во фрейме данных?

мой следующий шаг будет извлекать определенную информацию из текста и сохранять их в столбцах.

любой совет?

Ответ №1:

от pandas.DataFrame.append

Итеративное добавление строк к фрейму данных может быть более трудоемким с точки зрения вычислений, чем одно объединение. Лучшим решением является добавление этих строк в список, а затем одновременное объединение списка с исходным фреймом данных.

В вашем случае работает список [name, content] подсписков.

 file_list = glob.glob("C:/.../TextFiles/*.txt")
data = []
for file in file_list:
    with open(file, 'r',encoding="utf8", errors='ignore') as myfile:
        new_name=os.path.splitext(file)[0]
        data.append([re.sub(".*\\", " ",new_name),
            " ".join(myfile.read().split())])

data = pd.Dataframe(data, columns=['Name','Content'])