python提取数列数字_从pandasdatafram中的列中提取字符串
中的数字
只要字符串Incorrect_Price保持您在⽰例中呈现的结构(数字不是⽤⽂字表⽰的),任务就可以相对容易地解决。在
使⽤正则表达式,您可以使⽤similar SO question中的⽅法提取数字部分和可选的“cent”/“cents”或“dollar”/“dollars”。两个主要的区别是,你要的是数值和“美分”或“美元”对,⽽且它们可能不⽌⼀次出现。在import re
def extract_number_currency(value):
prices = re.findall('(?P[\d]*[.]?[\d]{1,2})\s*(?Pcent|dollar)s?', value)
result = 0.0
for value, currency in prices:
partial = float(value)
if currency == 'cent':
result += partial / 100
else:
result += partial
return result
print(extract_number_currency('3 dollars and 49 cent'))3.49
现在,您需要将此函数应⽤于列中所有不正确的值,其中的价格为⽂字。为了简单起见,我在这⾥将其应⽤于所有值(但我相信您将能够处理⼦集):
^{pr2}$
喂!在
正则表达式的分解'(?P[\d]*[.]?[\d]{1,2})\s*(?Pcent|dollar)s?'
有两个捕获命名为组(?P .... )
正则表达式提取中文字符第⼀个捕获组(?P[\d]*[.]?[\d]{1,2})捕获:
[\d]-数字
[\d]*-重复0次或更多次
[.]?-后跟可选(?)点
[\d]{1,2}-后跟⼀个重复1到2次的数字
\s*-表⽰0个或更多空⽩
现在第⼆个捕捉组要简单得多:(?Pcent|dollar)
cent|dollar-它归结为要捕获的cent和dollar字符串之间的选择
s?是“cents”或“dollars”的可选复数形式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论