亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將字符串小數轉換為浮點數?

如何將字符串小數轉換為浮點數?

富國滬深 2023-06-06 15:57:58
my_list=[['A','B','C','0.0'],['D','E','F','1.2'],['G','H','I','0'],['J','K','L','M']]我嘗試了這些,但它們只能將整數轉換為浮點數并將其余的保留為字符串。[[float(x) if x.isnumeric() else x for x in i] for i in my_list]for i, sublist in enumerate(my_list):     for j, x in enumerate(sublist):            if x.isnumeric():                my_list[i][j] = float(x)預期產出[['A','B','C',0.0],['D','E','F',1.2],['G','H','I',0],['J','K','L','M']]
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

如果除了“任何東西可能是或可能不是有效的浮點數”之外沒有其他標準,那么就try全部:


def try_float(value):

    try:

        return float(value)

    except ValueError:

        return value


result = [[try_float(v) for v in l] for l in my_list]


查看完整回答
反對 回復 2023-06-06
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

.isnumeric不返回True表示為字符串的浮點數。對于僅由數字組成而.不是數字的字符串,它返回 true。

這就是為什么您的解決方案只轉換整數,而不轉換浮點數。

檢查字符串是否為浮點數并因此對其進行轉換的最佳選擇是嘗試float()捕獲引發的ValueError并簡單地繼續。

如果您知道嵌套只有一層深,deceze 的解決方案應該會做得很好。

如果可能有更多嵌套,您可以嘗試遞歸函數 -

def convert_float(l: list):

? ? for i, v in enumerate(l):

? ? ? ? if type(v) == list:

? ? ? ? ? ? convert_float(v)

? ? ? ? ? ? continue

? ? ? ? try:

? ? ? ? ? ? l[i] = float(v)

? ? ? ? except ValueError:

? ? ? ? ? ? continue


查看完整回答
反對 回復 2023-06-06
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您也可以使用regex它來查找。像下面這樣的東西:


In [105]: import re


In [106]: r = re.compile(r"^\d*[.,]?\d*$")


In [107]: [[float(v) if r.match(v) else v for v in l] for l in my_list]

Out[107]: 

[['A', 'B', 'C', 0.0],

 ['D', 'E', 'F', 1.2],

 ['G', 'H', 'I', 0.0],

 ['J', 'K', 'L', 'M']]


查看完整回答
反對 回復 2023-06-06
  • 3 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號