私はホテルで働いています。ここで私はここでdata['roomNumber']=('paxNumber',isbb,)
正規表現は生テキストからデータを抽出します
のようなものを持っているために、データを抽出する必要がhave.I rapportsからのRAWファイルには、懸念のみ2部屋は、10と12ので、私は必要なデータがあるべきというサンプルがされているBreakfastData = {'10':['2','BB'],'12':['1','BB']}
1)roomNumber: '数字で始まり数字で始まり、数字で始まり、文字列で1つ以上のスペースが続く' 2)paxNumberは 'VA'文字列の直前の2つの数字です
3)isbbは2つの '/'の間にある 'BB'または 'HPDJ'オカレンスそれは '/ HPDJ /' または '/ HPDJ /' または '/ HPDJ /' など
10 PxxxxD、デビッド、マダム、氏T- EXPEDIA TRAVEL
ことができるので、しかし、時にはフォーマットは良くありません08.05.17 12.05.17 TP
SUP DBL/HPDJ /デビットCB AGENCE - NR
2 0 VA
NR
LxxxxSH、クラウディア、ミセス
08.05.17 19.05.17 TP
1 0 VA
NR BB
SUP SGL/BB/EN ATTENTE DE VIREMENT- EVITER LA 66 -
....など
編集:私は私の見返りに2 roomNumberを取得できますか最新
import re
data = {}
pax=''
r = re.compile(r"(\d+)\W*(\d+)\W*VA")
r2 = re.compile(r"/\s*(BB|HPDJ)\s*/")
r3 = re.compile(r"\d+\n")
r4 = re.compile(r"\d+\s+\w")
PATH = "/home/ryms/regextest"
with open(PATH, 'rb') as raw:
text=raw.read()
#roomNumber = re.search(r4, text).group()
#roomNumber2 = re.search(r3, text).group()
roomNumber = re.search(r4, text).group().split()[0]
roomNumber2 = re.search(r3, text).group().split()[0]
pax = re.findall(r, text)
adult = pax[0]; enfant = pax[1]
# if enfant is '0':
# pax=adult
# else:
# pax=(str(adult)+'+'+str(enfant))
bb = re.findall(r2, text) #On recherche BB ou HPDJ
data[roomNumber]=pax,bb
print(data)
print(roomNumber)
print(roomNumber2)
リターン
{'10': ([('2', '2'), ('1', '1')], ['HPDJ', 'BB'])}
10
12
[Finished in 0.1s]
? 私は\ n問題とread()、readline()、readlines()の問題をたくさん持っています。
生データをすべて取得する場合、適切なBreakfastData {}をどのように取得しますか? .zip()を使用しますか? 私はファイルを分割して解析することを望んでいましたが、私はそうするかもしれませんが、私は迷ってしまいます。そして、私は両方のパターンに一致する正規表現が必要です。
この2つの式はあなたのケースで一致します 1)^ \ d + $#これは数字の始まりと厳密に1つ以上の空白が文字列で続きます ' – somil
2つの正規表現を1つにすることはできますか?私は複数のパターンとre.findallの使用を参照してください? ..そして、私は\ nか 'P'でない数字だけを得ることができます – rasdehya
コメントでこれらの多くの質問をしないでください。新たな疑問に対して新しい質問をし、あなたの問題を解決するなら現在の答えを受け入れます。 – somil