Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换多个txt数据文件并导入excel或数据库_Python_Sql Server_Excel_Analytics_Transpose - Fatal编程技术网

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

Python 转换多个txt数据文件并导入excel或数据库,python,sql-server,excel,analytics,transpose,Python,Sql Server,Excel,Analytics,Transpose,我有大约1000个txt文件,格式如下。 标识符与数据之间用“:”分隔。但是,它本身可以包含的数据“:”我正在编写一个脚本,该脚本允许我将数据转换并导入excel、csv、microsoft Access或mssql格式。以有条理的方式。假设所有txt文件的标识符都相同 Author: sharkespare Content-Length: 15200098 Content-Type: application/pdf Creation-Date: 2015-02-05T07:27:34Z Las

我有大约1000个txt文件,格式如下。 标识符与数据之间用“:”分隔。但是,它本身可以包含的数据“:”我正在编写一个脚本,该脚本允许我将数据转换并导入excel、csv、microsoft Access或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

您可以循环思考字符串,直到遇到“:”符号,然后查看下一个字母,如果它是空格(“”),那么所需的数据将从整个字符串中分离出来。

您没有说明首选哪种技术,但由于python和Excel都有标记,因此我假设您可以同时使用这两种技术。以下内容很容易在python中实现。我假设文件格式是静态的

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

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

一些可能有助于实现的指针:

关于:

打开
txt文件
并按
拆分:“
(冒号后加空格),将其放入列表中

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)]
最后,使用
zip
将所有内容写入colums中的
csv文件中:

import csv
with open('save_file.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(*sorted))
如果不想转置,只需将
zip(*sorted)
替换为
sorted
。 保存第一个文件中的文本后,循环其他文件,仅将
数据添加到
csv文件中。通过使用“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]])

我可以使用sed或awk和find来清理数据。主要问题是如何转换数据。。并自动将数据“文件”导入csv格式或数据库亲爱的ikkjo。。谢谢你的意见。。我可能正在寻找一个示例代码。链接或。。某物将在伪代码上添加一些指向答案的指针。是否考虑使用Excel宏?是的,这是一个选项。我也在用一些工具来做这项工作嗨,a.smiet。。谢谢你的意见。我要试一试。。然后再打给你嗨,斯米特。。这是一个很好的代码。。我有一些打字错误。。稍后将对其进行优化并粘贴我的结果..使用“导入全局路径=”/home/download/*.txt”files=glob.glob(路径)修复了文件中的文件:'