Python 正则表达式,包括整数和以下符号%,-$

Python 正则表达式,包括整数和以下符号%,-$,python,excel,pandas,csv,Python,Excel,Pandas,Csv,我目前正在解析一个字符串以获取整数,并且我能够从该字符串中获取整数。然而,它并没有拉一些重要的标点(%,-$)来保持与int的连接。如何构建正则表达式来解决这些约束 -任意数字 -如果数字前有$。 -如果有一个,-。在数字的中间 -如果最后一位后面有一个% revenue\u number=[] 对于电子邮件正文中的单元格: match=cell[cell.find('revenue'):cell.find('revenue')+100]#查找单词“revenue”和后面的100个字符,并将该字

我目前正在解析一个字符串以获取整数,并且我能够从该字符串中获取整数。然而,它并没有拉一些重要的标点(%,-$)来保持与int的连接。如何构建正则表达式来解决这些约束

-任意数字
-如果数字前有$。
-如果有一个,-。在数字的中间
-如果最后一位后面有一个%

revenue\u number=[]
对于电子邮件正文中的单元格:
match=cell[cell.find('revenue'):cell.find('revenue')+100]#查找单词“revenue”和后面的100个字符,并将该字符串存储为变量
rev_list=list(map(int,re.findall(r'\d+',match)))
收入编号。追加(修订列表)
新的收入清单=pd.系列(收入编号)

理想情况下,如果字符串为“该值为35%,另一个值为12.3,2018-2019年为20美元”,则返回的列表为[35%,12.3,$202018-2019]。现在它返回[35,12,3,20,2018,2019]

对于您的限制,解决方案可能如下所示

>>> res = list(re.findall(r'\$?\d+(?:[-.,]\d+)?%?', value))
>>> res
['35%', '12.3', '$20', '2018-2019']
让我们看一下正则表达式的部分
\$?\d+(?:[-,]\d+?%?

  • \$?
    是零或一美元符号
  • \d+
    是一个或多个数字
  • (?:…)?
    定义一个非捕获组,该组可能不显示或不显示 只有一次
  • [-,]\d+
    是一个
    -
    后跟一个或多个数字
  • %?
    是零或百分之一符号