我有一个没有标准分隔符的文本文件。我需要能够检查当前行是否等于某个短语,如果是,代码应该使用某个分隔符,直到找到另一个短语。使用的分隔符是“,”,“ - ”,“:”和“ = ”。
请帮帮我:)
这就是我的代码目前
import csv
import glob
import os
directory = raw_input("INPUT Folder for Log Dump Files:")
output = raw_input("OUTPUT Folder for .csv files:")
txt_files = os.path.join(directory, '*.txt')
for txt_file in glob.glob(txt_files):
with open(txt_file, "rb") as input_file:
in_txt = csv.reader(input_file, delimiter=':')
filename = os.path.splitext(os.path.basename(txt_file))[0] + '.csv'
with open(os.path.join(output, filename), 'wb') as output_file:
out_csv = csv.writer(output_file)
out_csv.writerows(in_txt)
答案 0 :(得分:0)
我不能说这种方法的时间效率,但它可能只是得到你想要的东西。基本思想是创建一个列表以包含每个文本文件的行,然后将列表输出到新的csv文件。你保存了一个'分隔符'变量,然后在浏览文本文件时通过检查每一行来更改它。
例如: 我在桌面上创建了两个文本文件。他们的内容如下:
delimiter_test_1.txt
test = delimiter = here
确实-它工作
我' M:加:不确定
delimiter_test_2.txt
此:文件:用途:冒号
漂亮:大部分:该:全:时间
确实-它工作
如果写入-正确-是
然后我在他们身上运行了这个脚本:
import csv
import glob
import os
directory = raw_input("INPUT Folder for Log Dump Files:")
output = raw_input("OUTPUT Folder for .csv files:")
txt_files = os.path.join(directory, '*.txt')
delimiter = ':'
for txt_file in glob.glob(txt_files):
SavingList = []
with open(txt_file, 'r') as text:
for line in text:
if line == 'test=delimiter=here\n':
delimiter = '='
elif line == 'does-it-work\n':
delimiter = '-'
elif line == "I'm:Not:Sure":
delimiter = ':'
SavingList.append(line.split(delimiter))
with open('%s.csv' %os.path.join(output, txt_file.split('.')[0]), 'wb') as output_file:
writer = csv.writer(output_file)
for m in xrange(len(SavingList)):
writer.writerow(SavingList[m])
并获得两个csv文件,文本分割基于所需的分隔符。根据您更改分隔符的行数,您可以设置所述行的字典。然后你的支票变为:
if line in my_dictionary.keys():
delimiter = my_dictionary[line]
例如。