Python 3.x 正则表达式调用的字符串中缺少所需字符
我缺少此字符串中所需的字符:Python 3.x 正则表达式调用的字符串中缺少所需字符,python-3.x,regex,dataframe,Python 3.x,Regex,Dataframe,我缺少此字符串中所需的字符: df=pd.DataFrame({Score:[1.20\n1\n99%\n6.75\nX\n-\n14\n2\n1%\n+72]}) 预期结果: 1.20\n6.75\n14.00 下面是我使用的正则表达式: .str.findall(r'(?m)^\d+\.\d+$').str.join("\n") 此正则表达式未捕获\n14;我希望结果为\n14.00。换句话说,正则表达式必须处理丢失的浮点,并根据需要插入00。这意味着如果这发生在列
df=pd.DataFrame({Score:[1.20\n1\n99%\n6.75\nX\n-\n14\n2\n1%\n+72]})
预期结果:
1.20\n6.75\n14.00
下面是我使用的正则表达式:
.str.findall(r'(?m)^\d+\.\d+$').str.join("\n")
此正则表达式未捕获\n14
;我希望结果为\n14.00
。换句话说,正则表达式必须处理丢失的浮点,并根据需要插入00
。这意味着如果这发生在列表/字符串中的任何所需值上。所以我一直在寻找解决方案
请参见下面代码中的当前正则表达式结果:
import pandas as pd
import re
df=pd.DataFrame({'Score: ['1.20\n1\n99%\n6.75\nX\n-\n14\n2\n1%\n+72']})
df = df['Score'].str.findall(r'(?m)^\d+\.\d+$').str.join("\n")
df
0 1.20\n6.75
Name: Score, dtype: object
以下是一些想法:
r'(?m)^(?:\d+\.\d+\\d{2,})$'
看
(?m)^(?:\d+\.\d+\d+$(?=\n\d+$)$
看
在熊猫中,你可以使用
df=pd.DataFrame({'Score':['1.20\n1\n99%\n6.75\nX\n-\n14\n2\n1%\n+72']})
df['ID']=df['Score'].str.findall(r'(?m)^(\d+\.\d+\d{2,})$)
df['ID']=df['ID'].apply(lambda x:“\n”.join(映射(lambda:f'{a:.2f}',映射(float,x)))
>>>df['ID']
#=>0 1.20\n6.75\n14.00
#名称:ID,数据类型:object
也许你只是想要r'(?m)^(?:\d+\.\d+\d{2,})$'
?看见这里的规则是什么?请注意,(?m)^(?:\d+\。\d+\d+$(?=\n\d+$)$
也可以工作,但它遵循不同的逻辑。你需要什么逻辑?谢谢。将检查rues…了解我的regretA regexp无法添加任何内容,它所能做的只是返回部分输入字符串。如果要修改结果,则需要使用.str.replace()
我希望正则表达式捕获该值,即使缺少浮点数,也就是说,当只有整数时。这可能会在所需值之间不时发生。对不起,我的解释可能缺少正确的技术标准,无法接受解决方案。谢谢你好。若你们可以在可以的时候检查后续问题。