python從字串中提取指定內容

2021-10-14 05:55:08 字數 2729 閱讀 3682

我們在做資料處理的時候,會遇到包含多條格式類似的長字串,比如說

recv =

'node1_temperature:26 node1_humidity:48 node2_temperature:36 node2_humidity:48 ' \

'node3_temperature:24 node3_humidity:35 node4_temperature:54 node4_humidity:48 ' \

'node5_temperature:43 node5_humidity:48 '

從字串中我們可以看到有五組格式相同的資料,每一組包含temperature和humidity,所以該怎麼把這5組資料提取出來呢?

例如:提取node1_temperature的值,我們可以這樣做

node1_temperature = re.findall(r'node1_temperature:(.*) node1_humidity'

, recv)

該例提出的資料是26。從例子可以看出,findall方法的使用: re.findall(r』 26前面的部分內容(.*)26後面的部分內容』),也即指明前後,來確定中間夾著的內容,指明相對位置得到絕對位置。

temp =

node1_temperature = re.findall(r'node1_temperature:(.*) node1_humidity'

, recv)

int(node1_temperature[0]

))

格式要求:修改單引號內的內容即可,(.)不用更改。(.)前後的內容根據要提取的資料而定,並且要注意的原字串中某一資料如26的前後如果包含空格,(.*)前後的內容也要包括空格

re.findall(r'node1_temperature:(.*) node1_humidity'

, recv)

import re

temp =

humidity =

recv =

'node1_temperature:26 node1_humidity:48 node2_temperature:36 node2_humidity:48 ' \

'node3_temperature:24 node3_humidity:35 node4_temperature:54 node4_humidity:48 ' \

'node5_temperature:43 node5_humidity:48 '

node1_temperature = re.findall(r'node1_temperature:(.*) node1_humidity'

, recv)

int(node1_temperature[0]

))node1_humidity = re.findall(r'node1_humidity:(.*) node2_temperature'

, recv)

int(node1_humidity[0]

))node2_temperature = re.findall(r'node2_temperature:(.*) node2_humidity'

, recv)

int(node2_temperature[0]

))node2_humidity = re.findall(r'node2_humidity:(.*) node3_temperature'

, recv)

int(node2_humidity[0]

))node3_temperature = re.findall(r'node3_temperature:(.*) node3_humidity'

, recv)

int(node3_temperature[0]

))node3_humidity = re.findall(r'node3_humidity:(.*) node4_temperature'

, recv)

int(node3_humidity[0]

))node4_temperature = re.findall(r'node4_temperature:(.*) node4_humidity'

, recv)

int(node4_temperature[0]

))node4_humidity = re.findall(r'node4_humidity:(.*) node5_temperature'

, recv)

int(node4_humidity[0]

))node5_temperature = re.findall(r'node5_temperature:(.*) node5_humidity'

, recv)

int(node5_temperature[0]

))node5_humidity = re.findall(r'node5_humidity:(.*) '

, recv)

int(node5_humidity[0]

))print

("5個結點的溫度分別為:"

)print

(temp)

print

("5個結點的濕度分別為:"

)print

(humidity)

python 從字串中提取資料

1.使用正規表示式,用法如下 總結 匹配字串的開始。匹配字串的結尾。b 匹配乙個單詞的邊界。d 匹配任意數字。d 匹配任意非數字字元。x?匹配乙個可選的 x 字元 換言之,它匹配 1 次或者 0 次 x 字元 x 匹配0次或者多次 x 字元。x 匹配1次或者多次 x 字元。x 匹配 x 字元,至少 ...

從字串中提取數字

下面程式將字串中的連續數字提取出來,並存放到一維陣列中。比如說乙個字串 a284twx234 je3432 把 284 234 3432 這3個連續數字提取出來,分別存放到a 0 a 1 a 2 中。include include include int main buf i 0 sscanf bu...

從字串中提取整數

首先說一下我要做的事情 從乙個txt檔案中 存著乙個矩陣 從這個檔案中提取出這個檔案中的整數。矩陣 1 2 3 4 5 6 7 8 0 1 8 7 3 8 2 9 之前用的函式是fgets char fgets char s,int n,file stream 引數 s 字元型指標,指向儲存讀入資料...