转置多个txt数据文件并导入excel或数据库

时间:2015-09-25 12:25:20

标签: python sql-server excel analytics transpose

我有大约1000个txt文件,格式如下。 标识符通过':'与数据分开。但是它自己的数据可以包含':'我正在编写一个脚本,可以让我转换并将数据导入excel,csv,microsoft acess或mssql格式。以结构化的方式。鉴于所有txt文件的标识符都相同。

Author: sharkespare
Content-Length: 15200098
Content-Type: application/pdf
Creation-Date: 2015-02-05T07:27:34Z
Last-Modified: 2015-02-05T07:28:38Z
Last-Save-Date: 2015-02-05T07:28:38Z
created: Thu Feb 05 08:27:34 CET 2015
creator: Williams spear
date: 2015-02-05T07:27:34Z
dc:creator: Library of congress

3 个答案:

答案 0 :(得分:0)

你可以循环思考字符串直到你遇到“:”符号,而不是看下一个字母,如果它是空格(“”),而不是你想要的数据与整个字符串分开

答案 1 :(得分:0)

你没有说明首选的技术,但是由于python和Excel被标记,我认为你可以使用它们。以下在python中很容易实现。我假设文件格式是静态的。

创建标题行字符串,例如“作者,内容长度......”。 打开输出文件并将标头写入文件。

循环输入文件目录。 对于每个文件,读取文件中的行和标识符的分割(您知道标识符的名称,因此分割或字符串替换应该起作用,您可以按冒号分割,但是您必须特别注意dc:creator标识符)。将隔离的数据附加到该文件的字符串,附加“,”。完成后,该文件将该字符串附加到输出文件。完成所有文件后,输出文件将是可以用Excel打开的csv。

可能有助于实施的一些指示:

How can I iterate over files in a given directory?

How do I read a file line-by-line into a list?

Writing to CSV with Python adds blank lines

答案 2 :(得分:0)

怎么样:

打开txt file并按": "(冒号后面的空格)拆分,将其放入列表中。

text=[]
with open('read_file.txt','r') as f:
    for line in f:
        for word in line.split(": "):
            text.append(word)

现在每个偶数元素都是一个标识符,下一个奇数元素就是相应的数据。重建列表,将每个标识符及其数据放在一起:

sorted = [text[i:i+2] for i in range(0, len(text), 2)]

最后使用csv file

将所有内容写入列中的zip
import csv
with open('save_file.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(*sorted))

如果您不想转置它,只需将zip(*sorted)替换为sorted即可。 保存第一个文件中的文本后,循环显示其他文本,并仅将data添加到csv file。您可以通过打开'a'参数来实现这一点,允许您在文件末尾添加内容,并使用[zip(*sorted)[1]]

files = ["file1.txt", "file2.txt", "file3.txt", etc]
for each in  files:
    text=[]
    with open(str(each),'r') as f:
        for line in f:
            for word in line.split(": "):
                text.append(word)

    sorted = [lst[i:i+2] for i in range(0, len(lst), 2)]

    with open('save_file.csv', 'a') as f:
        writer = csv.writer(f)
        writer.writerows([zip(*sorted)[1]])