ナンバーと一部の文章があるテキストを元に、ナンバーと文章全体のテキストから、文章を抜き出す。

 f:id:alakialaca:20161013000928j:plain

はてなの中で写真の縦横って変えられないっぽい?

a.txtがこんな感じ。

f:id:alakialaca:20161021155124j:plain

b.txtがこんな感じ

f:id:alakialaca:20161021155126j:plain

a.txtの情報をもとにb.txtから情報を取る感じのやつです。

とりあえず、ナンバーと一部の文章があるテキスト(a.txt)の情報を元に、ナンバーと文章全体とurlがあるテキストから、a.txtのナンバーのある文章をb.txtから取り出したかったため作ったプログラムです。

 写真も見にくければ、文章もわかりづらいな。

あくまで、メモなので許してちょんまげ。

 

膨大な量のテキスト量だったのでしょうもないものを作ってしまった。。。

ナンの順番もごちゃごちゃだし、これを手作業で作った先輩すごすぎ〜

 

#!/usr/bin/python
# -*- encoding: utf-8 -*-

import re

pat=re.compile(r"http")

f=open("a.txt","r")
inline = f.readlines()
inline_len = len(inline)
label_haging=
for i in range(0,inline_len):#文の量でループ
    inline_split = inline[i].split()
    label_haging.append(inline_split[0])#ナンバーを蓄える
label_haging_len = len(label_haging)#ナンバーの量

fq = open("b.txt","r")
fqq = open("correct.txt","w")
inlines_hagging = fq.readlines()
inlines_h_len = len(inlines_hagging)
for j in range(0,inlines_h_len):
    if pat.findall(inlines_hagging[j]):#urlを発見
        url = inlines_hagging[j]
    if inlines_hagging[j] ==("\n"):#改行を飛ばす。
        continue
    inlines_h_split = inlines_hagging[j].split()
    for k in range(0,label_haging_len):#蓄えたナンバーの量で回す
        if label_haging[k] == inlines_h_split[0]:#蓄えたナンバーとb.txtのナンバーが一緒ならurlと文章全部を書き込み。
            fqq.write(url)
            fqq.write(inlines_hagging[j])

 

 数字が同じ奴が存在していたので、改良として、aの単語一つ一つがb.txtの文にあったら抜き出すようにしてみました。

なぜ単語一つ一つにしたかというと、a.txtの文は()や\など記号の類は消されていたからです。

 

#!/usr/bin/python
# -*- encoding: utf-8 -*-
#ナンバーと一部の文章があるテキストを元に、ナンバーと文章全体のテキストから、文章を抜き出す。
import re

pat=re.compile(r"http")

f=open("a.txt","r")
inline = f.readlines()
inline_len = len(inline)
label_haging=
label_haging2=
label_haging3=

label_haging4=
label_haging5=

label_haging6=
label_haging7=

label_haging8=[]
for i in range(0,inline_len):#文の量でループ
inline_split = inline[i].split()
label_haging.append(inline_split[0])#ナンバーを蓄える
label_haging2.append(inline_split[1])#単語を入れていく
label_haging3.append(inline_split[2])
label_haging4.append(inline_split[3])
label_haging5.append(inline_split[4])
label_haging6.append(inline_split[5])
label_haging7.append(inline_split[6])
label_haging8.append(inline_split[7])
label_haging_len = len(label_haging)#ナンバーの量


#pat = re.compile(r'.*%s.*' % value)
fq = open("b.txt","r")
fqq = open("correct.txt","w")
inlines_hagging = fq.readlines()
inlines_h_len = len(inlines_hagging)
for j in range(0,inlines_h_len):
if pat.findall(inlines_hagging[j]):#urlを発見
url = inlines_hagging[j]
if inlines_hagging[j] ==("\n"):#改行を飛ばす。
continue
inlines_h_split = inlines_hagging[j].split()
#pat1 = re.compile(r"label_haging2[j]")
for k in range(0,label_haging_len):#蓄えたナンバーの量で回す
if label_haging[k] == inlines_h_split[0]:#蓄えたナンバーとb.txtのナンバーが一緒ならurlと文章全部を書き込み。
if label_haging2[k] in inlines_hagging[j] and label_haging3[k] in inlines_hagging[j] and label_haging4[k] in inlines_hagging[j] and label_haging5[k] in inlines_hagging[j] and label_haging6[k] in inlines_hagging[j] and label_haging7[k] in inlines_hagging[j] and label_haging8[k] in inlines_hagging[j]:#単語一個一個文章全体にあるかどうか見る
fqq.write(url)
fqq.write(inlines_hagging[j])