[英]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.