Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python在句子中的多个位置提取美元金额_Python_Regex - Fatal编程技术网

用python在句子中的多个位置提取美元金额

用python在句子中的多个位置提取美元金额,python,regex,Python,Regex,我有一个句子,如下所示,其中我需要用逗号提取美元金额,以便能够填充到字典中。我尝试了几个选项,但没有成功。请指导 For par\n $3,500 single /$7,000 group For nonpar\n $7,000 single /$14,000 group 预期产出为: "rates":{ "single" : "$3,500 (par) / $7,000 (nonpar)", "group" : "$7,000 (par) / $14,000 (n

我有一个句子,如下所示,其中我需要用逗号提取美元金额,以便能够填充到字典中。我尝试了几个选项,但没有成功。请指导

For par\n 
$3,500 single /$7,000 group
For nonpar\n
$7,000 single  /$14,000 group
预期产出为:

"rates":{

    "single" :  "$3,500 (par) / $7,000 (nonpar)",
    "group"  :  "$7,000 (par) / $14,000 (nonpar)"
}
\n这里有一条新线路 金额每3个值后可能有小数点和逗号,如下所示

我能够单独为amount编写正则表达式,但并没有找到合适的方法将其扩展到我的需求

re.search(r'^\$\d{1,3}(,\d{3})*(\.\d+)?$','$1,212,500.23')
编辑1: 继续执行另一个步骤:

re.findall(r'\$\d{1,3}(?:\,\d{3})*(?:\.\d{2})?', str)
  • 可以获取列表中的所有值(但需要有策略来知道哪个值对应什么?)
编辑2:

re.findall(r'\For par\W*(\$\d{1,3}(?:\,\d{3})*(?:\.\d{2})?\W*single)\s*\W*(\$\d{1,3}(?:\,\d{3})*(?:\.\d{2})?\W*group)', str)
请帮助我完善这一点,使其更通用


谢谢

单词“par”、“nopar”、“single”和“group”都是常量,还是有时是其他单词?该文本的结构/一致性如何?总是有新线吗?两美元金额之间用“/”分隔,后面有一个单词?两个条目还是更多?是否所有条目都是相同的格式,使用相同的单词,或者它们以某种方式变化吗?新的行可能存在或不可能。所有的名称都是恒定的,但是在PAR或NOPAR之后,可以有更多的内容,如半冒号,其他类似PAR或非PAR,有时只存在PAR或NOPAR中的一个。(在这种情况下,可以排除/之后的内容,因为它被假定为par)只是检查了PAR可以是“in”,而非PAR有时可以是“同伴”,有时可以是“关联”。我粗暴地强迫和想出。让我知道这是否为您的输入工作。请测试您的意愿。只需输入文本,看看替换是否正确。NoOB我正在寻找更通用的正则表达式,可以满足M。y要求。这很好,但正在寻找更好的方法。