Ror*_*ach 2 python regex unicode
我正在使用 python 正则表达式来查找字符串中的所有价格。到目前为止,我只是在正确管理符号方面遇到了麻烦。\n此代码的输入为:'happy$37.54000happy$34$3454$3333\xe2\x82\xac27.80\xe2\x82\xac3.00.33.2\xc2\xa327.000'
import sys\n import re\n price = sys.argv[1]\n new = re.findall(r'[\\$\\20AC\\00A3]{1}\\d+\\.?\\d{0,2}',price,re.UNICODE)\n for prices in new:\n print prices\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n$37.54\n$34\n$3454 \n$3333\nRun Code Online (Sandbox Code Playgroud)\n\n我想要的是:
\n\n$37.54\n$34\n$3454\n$3333\n\xe2\x82\xac27.80\n\xe2\x82\xac3.00 \n\xc2\xa327.00\nRun Code Online (Sandbox Code Playgroud)\n\n如果我将欧元符号添加到代码中,则该文件将无法编译,因为它不是 unicode 字符。我在想,既然20AC是欧元符号的unicode,并且\\00A3是英镑符号的unicode,那么这样就可以了,但事实并非如此。
我认为问题在于这部分代码:...
\n\n[\\$\\20AC\\00A3]...\nRun Code Online (Sandbox Code Playgroud)\n\n任何帮助将不胜感激
\n\n为未来的人编辑 - 这是最好的代码答案:
\n\n# -*- coding: utf-8 -*-\nimport sys\nimport re\nprice = sys.argv[1]\nnew = re.findall(r'[$\xe2\x82\xac\xc2\xa3]{1}\\d+\\.?\\d{0,2}',price,re.UNICODE)\nfor prices in new:\n print prices\nRun Code Online (Sandbox Code Playgroud)\n
这是与您的示例相匹配的正则表达式。
\n\n[$\xe2\x82\xac\xc2\xa3]\\d+(\\.\\d{2})?
值得注意的是,我假设句点后面跟着两个数字。所以这将匹配 3.50 但忽略 3.5。如果不需要这种行为,您需要将正则表达式调整为
\n\n[$\xe2\x82\xac\xc2\xa3]\\d+(\\.\\d{1,2})?
在我的例子中,这将是 3.5。
\n| 归档时间: |
|
| 查看次数: |
5153 次 |
| 最近记录: |