的我試圖從像輸入捕獲數據:正則表達式捕獲不同類型的模式
...
10 79 QUANT. DE ITENS A FORNECER O N 9 0 67 75
E' a quantidade de itens que o fornecedor consegue suprir
o cliente para uma determinada data. As casa decimais estao
definidas no campo 022 (unid. casas decimais).
11 24 DATA ENTREGA/EMBARQUE DO ITEM O N 6 0 76 81
Data de entrega/embarque do item. Nos casos em que este cam-
po nao contiver a data, seu conteudo devera ser ajustado en-
tre as partes.
...
我的目標是捕獲: (「10」,「79」,「QUANT DE ITENS一個FORNECER ','O','N','9','0','67',75')等等...
我的第一次嘗試是循環過去並捕獲如下:
def parse_line(line):
pattern = r"\s(\d{1,6}|\w{1})\s" # do not capture the description
if re.search(pattern, line):
tab_find = re.findall(pattern, line, re.DOTALL|re.UNICODE)
if len(tab_find) > 6:
return tab_find
我的第二次嘗試是拆分文本並追加預期結果:
def ugly_parsing(line):
result = [None] * 9 # init list
tab_r = list(filter(None, re.split(r"\s", line))) # ignore ''
keys = [0, 1, -1, -2, -3, -4, -5, -6]
for i in keys:
result[i] = tab_r[i]
result[2] = " ".join(tab_r[2:-6])
return result
忽略描述是好的,但是當描述包含單個字母時,我的正則表達式不起作用。
爲什麼不在一個以上的空間分割,即'r'\ s {2,}''?或者他們是製表符? – jonrsharpe
請確定你需要什麼輸出。目前還不清楚(*等)*。 –
@jonrsharpe,不錯的選擇! –