Python 将多个txt转换为csv而不丢失数据

Python 将多个txt转换为csv而不丢失数据,python,google-colaboratory,Python,Google Colaboratory,免责声明:我是Python新手,非常感谢详细的回答 更新:删除了不相关的代码 更新:问题是Excel对每个单元格字符串的限制。我根据下面提出的解决方案提供了自己的解决方案 我想按行将多个.txt文件合并成一个.csv文件。这里有一些。 尝试的输出文件是data\u replication.csv。如您所见,五个.txt文件中只有两个成功集成到.csv文件中。在那里,您还可以找到.pdf格式的输入文件。这是我在Google Scholar上找到的非结构化随机论文 我使用的函数是比尔·贝尔在年提出的

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

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

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

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

我使用的函数是比尔·贝尔在年提出的

我用于将.pdf转换为.txt的函数是针对类似问题提出的:


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

您可以使用
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

使用RJ Adriaansen提出的函数作为蓝图,我为遭受相同约束的人创建了以下函数:Excel对每个单元格字符串的硬限制:32767

一种方法是放弃字符串内容超过33k的文档。然而,在我的案例中,这将导致相当大的数据丢失

相反,我将文档分割为32767个字符串

from glob import glob
import pandas as pd

def txt_to_csv(input_dir, output_dir, new_filename): 
  
  files = glob('/content/drive/MyDrive/ThesisAllocationSystem/' + input_dir + '/*.txt')
  data = [[i, open(i, 'rb').read()] for i in files]
  df = pd.DataFrame(data, columns = ['FileName', 'Content'])
  df['Content'] = df['Content'].str.slice(start = 0, stop = 32767) # Upper limit of strings per cell in csv
  df.to_csv(output_dir + '/' + new_filename + '.csv', index = False)

txt_to_csv('data_replication', 'data_replication', 'trial')

数据类型不是问题所在
.csv
文件只处理字符串,模块在写入之前对传递给它的每个值调用
str()
。但是如果没有输入数据的样本,就很难说出问题的真正原因。例如,如果其中3个文件为空或包含二进制数据,您将得到报告的结果。让我知道它是否足够和/或链接不工作。链接工作,我看到输出,但没有输入。最有可能的问题来源是输入,因为代码在5次中有2次按预期工作。谢谢你的提示。我已经用原始函数更新了这篇文章,该函数用于将源.pdf文件转换为单个.csv输出文件的input.txt文件。链接的文件夹包含.pdf和.txt文件以及.csv文件。我收到以下错误:
UnicodeDecodeError:“utf-8”编解码器无法解码位置110964中的字节0xa3:无效的开始字节
。如何将decode()步骤从字节添加到字符串?好的,我看到您已将文件编码为
拉丁语-1
。我已经更新了我的答案,请尝试。不幸的是,输出文件最终是空的。好的,试试这个。打开时的
与代码中的
完全相同,因此应该可以正常工作。不幸的是,与其他函数一样出现了同样的问题:数据丢失。请参阅
data\u replication\u answer1.csv
了解您的代码演示。
from glob import glob
import pandas as pd

def txt_to_csv(input_dir, output_dir, new_filename): 
  
  files = glob('/content/drive/MyDrive/ThesisAllocationSystem/' + input_dir + '/*.txt')
  data = [[i, open(i, 'rb').read()] for i in files]
  df = pd.DataFrame(data, columns = ['FileName', 'Content'])
  df['Content'] = df['Content'].str.slice(start = 0, stop = 32767) # Upper limit of strings per cell in csv
  df.to_csv(output_dir + '/' + new_filename + '.csv', index = False)

txt_to_csv('data_replication', 'data_replication', 'trial')