簡體   English   中英

如何在python中使用正則表達式從字符串中提取小數點數字和百分比

[英]How to extract decimal point numbers and percentages from a string using regex in python

我希望從數千條評論中提取百分比,但格式各不相同。 一個人可能將 10% 寫為 10 或 10% 或 10.00% 或 10.0,所以我需要能夠處理這些可能性中的任何一種。 我有兩個問題,第一個是我的代碼在可用時沒有捕獲 % ,第二個是有時正則表達式語句多次捕獲某個數字。

FA_comment = "WPSGX 7.69% SVAIX 7.69% IWP 3.85% FLMVX 3.85% QUAYX 3.85% DEVLX 3.85% TINGX 19.23% TGVIX 23.08% ASYLX 15.38% CEMVX 11.54%"
tickers = re.findall(r'\b[A-Z]{2,5}\b', FA_comment)
numbers = re.findall(r'((\d{1,2}(\.\d{1,2})*))[%]?', FA_comment)
print(FA_comment)
print(tickers)
print(numbers

這是我得到的輸出:

WPSGX 7.69% SVAIX 7.69% IWP 3.85% FLMVX 3.85% QUAYX 3.85% DEVLX 3.85% TINGX 19.23% TGVIX 23.08% ASYLX 15.38% CEMVX 11.54%
[u'WPSGX', u'SVAIX', u'IWP', u'FLMVX', u'QUAYX', u'DEVLX', u'TINGX', u'TGVIX', u'ASYLX', u'CEMVX']
[(u'7.69', u'7.69', u'.69'), (u'7.69', u'7.69', u'.69'), (u'3.85', u'3.85', u'.85'), (u'3.85', u'3.85', u'.85'), (u'3.85', u'3.85', u'.85'), (u'3.85', u'3.85', u'.85'), (u'19.23', u'19.23', u'.23'), (u'23.08', u'23.08', u'.08'), (u'15.38', u'15.38', u'.38'), (u'11.54', u'11.54', u'.54')]

這是我想得到的輸出:

[u'WPSGX', u'SVAIX', u'IWP', u'FLMVX', u'QUAYX', u'DEVLX', u'TINGX', u'TGVIX', u'ASYLX', u'CEMVX']
[u'7.69%', u'7.69%', u'3.85%', u'3.85%', u'3.85%', u'3.85%', u'19.23%', u'23.08', u'15.38%', u'11.54%']

re.findall與兩個捕獲組一起使用,一個用於標簽,另一個用於百分比。 然后,使用列表理解來生成您期望的標簽/百分比的一維列表。

FA_comment = "WPSGX 7.69% SVAIX 7.69% IWP 3.85% FLMVX 3.85% QUAYX 3.85% DEVLX 3.85% TINGX 19.23% TGVIX 23.08% ASYLX 15.38% CEMVX 11.54%"
pcts = re.findall(r'\b([A-Z]+) (\d+(?:\.\d+)?%?(?!\S))', FA_comment)
print([i[0] for i in pcts])
print([i[1] for i in pcts])

這打印:

['WPSGX', 'SVAIX', 'IWP', 'FLMVX', 'QUAYX', 'DEVLX', 'TINGX', 'TGVIX',
 'ASYLX', 'CEMVX']
['7.69%', '7.69%', '3.85%', '3.85%', '3.85%', '3.85%', '19.23%', '23.08%',
 '15.38%', '11.54%']

暫無
暫無

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

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