簡體   English   中英

通過正則表達式從列表中的字符串中提取數字

[英]extracting numbers from a string in a list via regex

我有一個線性方程式,我正在嘗試用Python處理它。 該線性方程在列表中。

z=['i=(6040.66194238063)+(51.7296373326464*a)+(41.7319764455748*b)+(-193.993966414084*c)+(-215.670960526368*d)+(-531.841753178744*e)+(5047.1039987166*f)+(3925.37115184923*g)+(77.7712765761365*h)']

我想找到一種方法來構建一個包含所有常量的列表。

import re
m=re.findall('-?[0-9]+\.?[0-9]*', z[0])

會給你一個清單m

['6040.66194238063', '51.7296373326464', '41.7319764455748', '-193.993966414084', '-215.670960526368', '-531.841753178744', '5047.1039987166', '3925.37115184923', '77.7712765761365']

如果您希望列表作為浮點數列表,您現在可以執行以下操作:

m = [float(x) for x in m]

如果要在列表中提取常量,則應執行以下操作:

z = ["i=(6040.66194238063)+(51.7296373326464*a)+(41.7319764455748*b)+(-193.993966414084*c)+(-215.670960526368*d)+(-531.841753178744*e)+(5047.1039987166*f)+(3925.37115184923*g)+(77.7712765761365*h)"]
for elem in z:
    num = ""
    cst = []
    for c in elem:
        if c.isdigit() or c =='.' or (c == '-' and not len(num)):
            num += c
        elif len(num):
            cst.append(num)
            num = ""
    print cst

這將輸出:

['6040.66194238063', '51.7296373326464', '41.7319764455748', '193.993966414084', '215.670960526368', '531.841753178744', '5047.1039987166', '3925.37115184923', '77.7712765761365']

暫無
暫無

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

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