【问题标题】:Multiple txt files as separate rows in a csv file without breaking into lines (in pandas dataframe)多个 txt 文件作为 csv 文件中的单独行而不分成行(在熊猫数据框中)
【发布时间】:2020-11-02 08:39:15
【问题描述】:

我在一个文件夹中有许多 txt 文件(已从 pdf 转换)。我想创建一个 csv/excel 数据集,其中每个文本文件都将成为一行。现在我正在打开pandas dataframe 中的文件,然后尝试将其保存到csv 文件中。当我打印dataframe 时,我得到每个 txt 文件一行。但是,当保存到csv 文件时,文本会被破坏并为每个 txt 文件创建多行/多行,而不仅仅是一行。你知道我该如何解决这个问题吗?任何帮助将不胜感激。谢谢。

以下是我现在使用的代码。

import glob
import os
import pandas as pd

file_list = glob.glob(os.path.join(os.getcwd(), "K:\\text_all", "*.txt"))

corpus = []

for file_path in file_list:
    with open(file_path, encoding="latin-1") as f_input:
        corpus.append(f_input.read())

df = pd.DataFrame({'col':corpus})
print (df)

df.to_csv('K:\\out.csv')

更新

如果此解决方案不可行,在pandas dataframe 中稍微转换一下数据也会有所帮助。我想创建一个txt文件名称的列,即文件夹中每个txt文件的名称将成为各自文本文件的标识符。然后我会将其保存为tsv 格式,这样行就不会因为comma 而分开,正如这里有人建议的那样。

我需要类似以下的东西。

identifier       col
txt1             example text in this file
txt2             second example text in this file
...
txtn             final example text in this file

【问题讨论】:

  • 文件中的文本有,(逗号)。另存为 CSV 取决于它作为分隔符。所以无论哪里有逗号,你都会休息一下。试试 TSV(制表符分隔值)df.to_csv('K:\\out.tsv', sep='\t')
  • 感谢@Vishnudev。问题是我丢失了文本标识符,因为我想手动编辑它以创建一个列来识别文本。那么有什么方法可以将 tsv 文件转换为 csv 吗?或者,是否可以通过文本文件的名称在dataframe 中创建一个列,即text1text2text3 等。对不起,如果它晦涩难懂,我很乐意解释更多。
  • 你需要在你的问题@crackers 中用一个例子来详细说明。
  • 我试过这个:quoting=csv.QUOTE_ALL。似乎没有工作。我已经对我之前解释的内容做了进一步的解释。谢谢

标签: python python-3.x pandas text export-to-csv


【解决方案1】:

使用

import csv
df.to_csv('K:\\out.csv', quoting=csv.QUOTE_ALL)

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2017-04-22
    • 2021-05-07
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多