私が求めているのと同じ作業を行う 2 つのコードがありますが、データ セットを便利にするための有用なコードまたはより優れたコードは得られませんでした。私 は2 TEXT
ファイルを 持って おり , 数字 が含まれ て いる名前 から 明らか な よう にinput_num
, と 2 番目 に と 名付け られ ています . これら 2 ファイル は 8 から 10 メガバイト です . 「input_num.txt」input_data
input_num.txt
input_data
ASA5.txt DF4E6.txt DFS6Q7.txt
このinput_data.txt
>56|61|83|92|ASA5
Dogsarebarking
これら 2 つはテキスト ファイルの一部であり、input_data.txt
最後の列に などを含みますASA5
。これらは からのデータです。そのため、プログラムは最初に最後の列をinput_num.txt
チェックし、上記のように値を含むgoto よりも、単語に戻り、それらを 4 にカットします。>56|61|83|92|ASA5
ASA5
input_num.txt
5
input_num.txt
4
input_data.txt
私はそれのための2つのコードを持っています:1は
import os
import re
file_c = open('num_data.txt')
file_c = file_c.read()
lines = re.findall(r'\w+\.txt \d+', file_c)
numbers = {}
for line in lines:
line_split = line.split('.txt ')
hash_name = line_split[0]
count = line_split[1]
numbers[hash_name] = count
file_i = open('input_data.txt')
file_i = file_i.read()
for hash_name, count in numbers.iteritems():
regex = '(' + hash_name.strip() + ')'
result = re.findall(r'>.*\|(' + regex + ')(.*?)>', file_i, re.S)
if len(result) > 0:
data_original = result[0][2]
stripped_data = result[0][2][int(count):]
file_i = file_i.replace(data_original, '\n' + stripped_data)
f = open('input_new.txt', 'wt')
f.write(file_i)
f.close()
そして2つ目は
import csv
output = open('output.txt' , 'wb')
def get_min(num):
return int(open('%s.txt' % num, 'r+').readlines()[0])
last_line = ''
input_list = []
#iterate over input.txt in sort the input in a list of tuples
for i, line in enumerate(open('input.txt', 'r+').readlines()):
if i%2 == 0:
last_line = line
else:
input_list.append((last_line, line))
filtered = [(header, data[:get_min(header[-2])] + '\n' ) for (header, data) in input_list]
[output.write(''.join(data)) for data in filtered]
output.close()