簡體   English   中英

使用 Python 正則表達式捕獲具有相似模式的列

[英]Capturing columns with similar patterns with Python regex

我正在使用正則表達式和 Python 抓取 pdf。模式在每一列中重復。 我不明白如何分別定位每一列信息。

文本字符串:


2000 2001 2002 2003\n
14,756 10,922 9,745 12,861\n
9,882 11,568 8,176 10,483\n
13,925 10,724 10,032 8,927\n

我需要按年返回數據,例如:

[('2000', '14,756', '9,882', '13,925'),
('2001', '10,922', '11,568', '10,742'),
('2002', '9,745', '8,176', '10,032'),
('2003', '12,861', '10,483', '8,927')]

一旦我有了正則表達式,我就明白了如何將它從頁面中拉出來並將其放入 df 中。 我只是不明白如何分別定位列。 我只是一次捕獲所有內容。

恐怕無法捕獲列,但您可以將正則表達式與匹配的列組結合起來,並使用zip進行轉置。

(?:^|\n)([\d,]+)\s([\d,]+)\s([\d,]+)\s([\d,]+)(?:$|\n)

看看這個正則表達式是如何工作的。

import re

text = """2000 2001 2002 2003
14,756 10,922 9,745 12,861
9,882 11,568 8,176 10,483
13,925 10,724 10,032 8,927"""

pattern = r"(?:^|\n)([\d,]+)\s([\d,]+)\s([\d,]+)\s([\d,]+)(?:$|\n)"
grouped = re.findall(pattern, text, flags=re.M)
columns = list(zip(*grouped))  # the expected result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM