首页 > 解决方案 > 将多个txt转换为csv而不丢失数据

问题描述

免责声明:我是 Python 新手,非常感谢详细的答案。

更新:删除了不相关的代码。

更新:问题是每个单元格字符串的 Excel 限制。我根据以下建议的解决方案提供了自己的解决方案。

我想将多个 .txt 文件逐行合并到一个 .csv 文件中。这是一些复制数据。尝试的输出文件是data_replication.csv. 如您所见,五个 .txt 文件中只有两个成功集成到 .csv 文件中。在那里,您还可以找到 .pdf 格式的输入文件。这是我在 Google Scholar 上找到的非结构化随机论文。

我使用的功能是由 Bill Bell 在“将文本文件的文件夹与单元格中的每个内容组合成 CSV”中提出的

我用于从 .pdf 转换为 .txt 的功能是在 hkr 中针对类似问题“将 PDF 文件转换为 TXT 文件”提出的

def txt_to_csv(x): 

    os.chdir('/content/drive/MyDrive/ThesisAllocationSystem/' + x)

    with open(x + '.csv', 'w', encoding = 'Latin-1') as out_file:
        csv_out = csv.writer(out_file)
        csv_out.writerow(['FileName', 'Content'])
        for fileName in Path('.').glob('*.txt'):
            lines = [ ]
            with open(str(fileName.absolute()),'rb') as one_text:
                for line in one_text.readlines():
                    lines.append(line.decode(encoding='Latin-1',errors='ignore').strip())
            csv_out.writerow([str(fileName),' '.join(lines)])

txt_to_csv('data_replication')

我猜数据类型可能是这里的问题,并感谢任何帮助我的尝试。

标签: pythongoogle-colaboratory

解决方案


您可以pandas为此使用:

from glob import glob
import pandas as pd

files = glob('/content/drive/MyDrive/ThesisAllocationSystem/*.txt') # create list of text files
data = [[i, open(i, 'rb').read()] for i in files] # create a list of lists with file names and texts
df = pd.DataFrame(data, columns=['FileName', 'Content']) # load the data in a pandas dataframe
df.to_csv('data_replication.csv') # save to csv

推荐阅读