這個問題在這里已經有了答案: 如何從字串中提取浮點數 [重復] 7 個答案 1 小時前關閉。
我只想從以下鍵值對資料中提取數字值:
data='''
var char = [
{d:new Date(1631052000000),k:67.200,o:0},
{d:new Date(1631138400000),k:67.830,o:0},
{d:new Date(1631224800000),k:67.420,o:0},
{d:new Date(1631484000000),k:68.070,o:0},
{d:new Date(1631570400000),k:67.630,o:0},
{d:new Date(1631656800000),k:68.430,o:0},
{d:new Date(1631743200000),k:67.500,o:0},
{d:new Date(1631829600000),k:68.770,o:0},
{d:new Date(1632088800000),k:68.880,o:0},];
'''
預期輸出:例如
1631052000000, 67.200, 0
uj5u.com熱心網友回復:
您可以使用\d 來匹配數字。此外,您可以\.\d 在可選組中使用以可選地匹配該點之后的點和數字。
import re
data='''
var char = [
{d:new Date(1631052000000),k:67.200,o:0},
{d:new Date(1631138400000),k:67.830,o:0},
{d:new Date(1631224800000),k:67.420,o:0},
{d:new Date(1631484000000),k:68.070,o:0},
{d:new Date(1631570400000),k:67.630,o:0},
{d:new Date(1631656800000),k:68.430,o:0},
{d:new Date(1631743200000),k:67.500,o:0},
{d:new Date(1631829600000),k:68.770,o:0},
{d:new Date(1632088800000),k:68.880,o:0},];
'''
# Construct a regex to match digits only
pattern = re.compile("\d (?:\.\d )?")
# Find all matches of this pattern
print(pattern.findall(data))
這輸出
['1631052000000', '67.200', '0', '1631138400000', '67.830', '0', '1631224800000', '67.420', '0', '1631484000000', '68.070', '0', '1631570400000', '67.630', '0', '1631656800000', '68.430', '0', '1631743200000', '67.500', '0', '1631829600000', '68.770', '0', '1632088800000', '68.880', '0']
您可以根據需要進一步將其轉換為浮點數、整數等。
代碼中使用的整個正則運算式如下:
\d # Match 1 or more digits
(?: # Start a non-capturing, optional group
\. # Match a . literally
\d # Match 1 or more digits
)? # Close the non-capturing, optional group
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411335.html
標籤:
