我有大约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
答案 0 :(得分:0)
你可以循环思考字符串直到你遇到“:”符号,而不是看下一个字母,如果它是空格(“”),而不是你想要的数据与整个字符串分开
答案 1 :(得分:0)
你没有说明首选的技术,但是由于python和Excel被标记,我认为你可以使用它们。以下在python中很容易实现。我假设文件格式是静态的。
创建标题行字符串,例如“作者,内容长度......”。 打开输出文件并将标头写入文件。
循环输入文件目录。 对于每个文件,读取文件中的行和标识符的分割(您知道标识符的名称,因此分割或字符串替换应该起作用,您可以按冒号分割,但是您必须特别注意dc:creator标识符)。将隔离的数据附加到该文件的字符串,附加“,”。完成后,该文件将该字符串附加到输出文件。完成所有文件后,输出文件将是可以用Excel打开的csv。
可能有助于实施的一些指示:
How can I iterate over files in a given directory?
答案 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]])