列表上的Python re.match()和设置为np.nan的非匹配项

2024-10-02 12:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用re.match()检查列表中的每个元素是否与格式digitFullStopDigitDigitDigit匹配(例如2.00)

如果某个元素与格式匹配,我希望将该元素附加到新列表中。如果元素与格式不匹配,我想将NaN附加到新列表中

问题是我的代码不起作用;它将所有元素设置为NaN

谢谢你的帮助

import re
import numpy as np 

lst = [2, 2.00, 2.2, 20000]
newlst = []

for l in lst:
    if re.match('^\d{1}(\.)\d{2}$', str(l)):
        newlst.append(l)
    else:
        newlst.append(np.nan) 

# Output
[nan, nan, nan, nan]
    
# Expected output
[nan, 2.00, nan, nan]

Tags: 代码importrenumpy元素列表格式match
1条回答
网友
1楼 · 发布于 2024-10-02 12:25:47

问题是

str(l)

操作是简化浮点数。从2.0000000。。。到“2.0”

“2.0”与您的模式不匹配。解决此问题的一种方法是使用此新模式。将匹配点后的1个或多个零:

r'\d\.0+'

使用新模式,您的输出将符合要求:

[nan, 2.0, nan, nan]

相关问题 更多 >

    热门问题