###実現したいこと
https://teratail.com/questions/90447
上記の続きで質問をさせて頂きます。
正規表現を使って、下記に記載したデータのうち、太字にしているテキストのみを抽出したいのですが、どのように書いたら良いでしょうか?
恐らく、LTTextBoxHorizontal()のあとにくる "432.591"(これは座標?)を使うとよいのではないかとは思うのですが。。
正規表現について全く理解出来ておらず、初歩的な質問でごめんなさい。
###得られているデータ
<LTTextBoxHorizontal(0) 29.270,548.169,174.710,561.719 '◎マーケット概況 (2017/8/22)\n'>
<LTTextBoxHorizontal(1) 72.111,373.722,180.732,391.944 'ムンバイ SENSEX30種 31,291.85\nブラジル ボベスパ指数 70,011.25\n
'>
<LTTextBoxHorizontal(2) 67.671,365.082,180.732,374.784 'FTSE/JSE アフリカ トップ40指数 49,588.44\n'>
<LTTextBoxHorizontal(3) 98.029,533.845,112.242,541.066 '指標\n'>
<LTTextBoxHorizontal(4) 72.471,467.936,137.782,526.874 '日経平均株価\n日経225シカゴ(先物)\nTOPIX(東証株価指数)\nジャ
スダック指数\nNYダウ 工業株30種\nナスダック 総合指数\nMSCIカナダ指数\n'>
<途中省略>
<LTTextBoxHorizontal(47) 475.911,408.778,536.711,417.622 'S&P先進国REIT指数\n'>
<LTTextBoxHorizontal(48) 487.190,391.618,525.431,408.382 'WTI原油先物\nNY金先物\n'>
<LTTextBoxHorizontal(49) 435.231,471.371,460.759,481.839 '為替※4\n'>
<LTTextBoxHorizontal(50) 435.111,412.331,460.795,420.931 'リート\n'>
<LTTextBoxHorizontal(51) 439.431,395.171,456.476,403.771 '商品\n'>
<LTTextBoxHorizontal(52) 432.591,345.965,806.637,380.140 '【株式】\n●国内株は小幅に下落。北朝鮮を巡る地政学リスクや米ト
ランプ政権の混迷を警戒し、日経平均の終値は5月1日以来、3か月半ぶ\nりの安値を付けた。\n●米国株は上昇。前日まで下げが続い
たハイテク株などへの値ごろ感に着目した買い、および税制改革への期待が相場を押し上げた。\n'>
<LTTextBoxHorizontal(53) 432.591,300.725,804.984,334.900 '【債券】\n●国内債は小幅に下落。20年債入札の結果発表を前に持ち
高整理の売りが先行したものの、入札の結果が順調だったことから相\n場は堅調に推移した。\n●米国債は下落。税制改革への期待か
ら米国株が上昇したことを受けて、米国債には売りが広がった。\n'>
<LTTextBoxHorizontal(54) 432.591,246.485,805.164,289.540 '【為替】\n●東京時間では、1ドル=109円35銭近辺、1ユーロ=128円95
銭近辺で終了。日本の長期金利は上昇したものの、米国の金利上昇と\n比べ相対的に小さく、日米金利差の拡大を受けて、円売り・米
ドル買いが優勢となった。\n●欧米時間では、1ドル=109円60銭近辺、1ユーロ128円90銭近辺で終了。米国株の上昇および日米金利差
の拡大観測が円売り・\n米ドル買いを誘った。\n'>
<LTTextBoxHorizontal(55) 432.591,210.245,583.778,226.180 '【リート・商品】\n●東証REIT指数、原油先物は上昇。金先物は下落
。\n'>
<LTTextBoxHorizontal(56) 30.590,187.506,116.022,197.425 '◎主な指標・イベント\n'>
<LTTextBoxHorizontal(57) 132.111,189.289,293.289,195.914 '※主な指標・イベントは予告無く変更されることがあります。\n'>
<以下省略>
###ソースコード
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfparser import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfparser import PDFPage
from pdfminer.pdfdevice import PDFDevice
from pdfminer.converter import PDFPageAggregator
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.layout import LTTextBoxHorizontal
fp = open(PDF_file, 'rb')
parser = PDFParser(fp)
document = PDFDocument()
parser.set_document(document)
password=""
document.set_parser(parser)
document.initialize(password)
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
pages = list(document.get_pages())
page_1 = pages[0]
interpreter.process_page(page_1)
layout = device.get_result()
for l in layout:
if isinstance(l, LTTextBoxHorizontal):
#print(l)
print(l.get_text())
###補足情報
windows7、python3.6.1を使用しています。
回答2件
あなたの回答
tips
プレビュー