首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python - Regex“机器学习”

Python - Regex“机器学习”
EN

Stack Overflow用户
提问于 2013-03-03 08:04:23
回答 3查看 1.4K关注 0票数 4

我有成千上万行的文本,我需要在那里找到货币表示法,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Lorem ipsum dolor sit amet, 100.000,00 USD sadipscing elitr, sed diam nonumy eirmod 
GBP 400 ut labore et dolore magna aliquyam erat, sed diam voluptua. At USD 20 eos et 
accusam et justo duo dolores et 100,000.00 USD  ea rebum. Stet 3,-- USD gubergren, no 

Python脚本应该返回转换为USD的金额。(例如,100000USF、400英镑->美元等)

到目前为止,我所做的是手动创建数字-货币组合的正则表达式来检索值,然后将货币与数据库进行比较并计算汇率。

然而,这既不是有效的,也不是未来的证据(例如,如果添加了另一种货币),所以我想知道是否有一种有效的机器学习算法,我可以用一些例子来“训练”,然后它试图找到一些“价值-货币”的组合?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-03 09:17:08

您的问题没有很好地定义,但不需要机器学习。可能的货币集合是有限的并且很小,并且货币表示的集合不能复杂到不能作为正则表达式来表达。您根本没有使用正则表达式的全部功能。

例如,要匹配多个货币,请使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    currency = r"((USD)|(GBP)(...))"

然后,您可以表达表示的数字部分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    numbers = r"([0-9]+[0-9\.,]*)"

编译正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    matcher = re.compile(numbers+r"[\s]*+"currency)

您可以创建第二个匹配器,该匹配器首先匹配货币。你也许可以在可选的捕获组之类的地方使用一些聪明的东西,但是如果性能不是一个大问题,我会推荐一个简单的第二个匹配器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    matcher2 = re.compile(currency+r"[\s]*"+numbers)

请注意,“currency”正则表达式不需要手动创建。一旦有匹配,您就可以访问相应的组号(1或3)来获取匹配的货币。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    curren = m.group(1)
    amount = m.group(2)

这是可能的,因为整个“货币”正则表达式被视为一个单独的组。

票数 2
EN

Stack Overflow用户

发布于 2013-03-03 09:40:03

人类甚至可以学习缩写词是否是一种货币?如果一种新的货币突然出现,那么它与任何其他任意的缩写词有什么区别?假设你遇到了像“1000CPU”这样的东西,如果你不知道CPU是什么,你怎么知道它是(或不是)货币?

您可以使用自然语言处理来查看有问题的数字周围的上下文,但这将需要更多的处理,并且您永远无法确定。

我的观点是:对于这个问题,如果机器学习是适用的,那就有点过头了。

为什么要用困难的方式做一些事情,而用另一种方法做起来更容易、更准确?

票数 3
EN

Stack Overflow用户

发布于 2013-03-03 09:57:31

我只会使用正则表达式来粗略地提取可能的对:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re

test = '''Lorem ipsum dolor sit amet, 100.000,00 USD sadipscing elitr, sed diam nonumy eirmod 
GBP 400 ut labore et dolore magna aliquyam erat, sed diam voluptua. At USD 20 eos et 
accusam et justo duo dolores et 100,000.00 USD  ea rebum. Stet 3,-- USD gubergren, no'''

number = r'([\d+.,]+)'
currency = r'([A-Z]{2,3})'

r1 = re.compile(number + r'\s+' + currency)
r2 = re.compile(currency + r'\s+' + number)

matches = r1.findall(test) + r2.findall(test)

print(matches)

我得到了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('100.000,00', 'USD'), ('100,000.00', 'USD'), ('GBP', '400'), ('USD', '20')]

从那里,您可以解析数字并过滤掉不存在的货币。你只有五六种可能的格式,所以在这里机器学习真的无能为力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15183685

复制
相关文章
Winform 中 DesignMode 返回值不正确的问题。
本文转载:http://blog.csdn.net/sabty/article/details/5325260
跟着阿笨一起玩NET
2018/09/18
1.6K0
js --- return返回值 闭包
有权访问另一个函数作用域内变量的函数都是闭包。这里 inc 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。
小蔚
2019/09/11
4.4K0
Go:命名返回值和直接返回值的使用与潜在隐患
在这个例子中,虽然给命名返回值result赋值了,但最终函数却直接返回了a + b的计算结果,而不是result的值。
运维开发王义杰
2023/08/21
3200
Go:命名返回值和直接返回值的使用与潜在隐患
带返回值的函数,闭包,沙箱,递归详解
那了解了函数 this 指向的不同场景之后,我们知道有些情况下我们为了使用某种特定环境的 this 引用, 这时候时候我们就需要采用一些特殊手段来处理了,例如我们经常在定时器外部备份 this 引用,然后在定时器函数内部使用外部 this 的引用。 然而实际上对于这种做法我们的 JavaScript 为我们专门提供了一些函数方法用来帮我们更优雅的处理函数内部 this 指向问题。 这就是接下来我们要学习的 call、apply、bind 三个函数方法。
Dream城堡
2018/10/09
1.9K0
toupper和tolower的返回值是int型值
如题,C++中函数库<cctype>定义了函数toupper和tolower,需要注意的是它们的返回值是int型的。直接上程序
用户7886150
2021/02/09
9000
Gorm Update 返回的影响条数不正确问题
Gorm 连接 mysql 使用的是 github.com/go-sql-driver/mysql 驱动, 但是这个驱动中 clientFoundRows 默认是 false, 也就是说返回的影响条数是实际的影响条数, 而不是匹配的条数, 也就是说如果要修改的数据和表中数据一样, 就不会返回影响条数, 这和 mysql 官方不一致
北漂的我
2021/11/25
2.5K0
scala:把函数作为值或参数进行传递、作为返回值进行返回,以及什么是闭包和柯里化
内层函数访问外层函数的局部变量,会自动延长外层函数局部变量的生命周期,与内层函数形成一个闭合的效果,我们称之为闭包
孙晨c
2021/02/25
1.9K0
Go语言函数的参数和返回值
第一类对象(first-class object)指可在运行期创建,可用作函数参数或返回值,可存入变量的实体。最常见的用法就是匿名函数。
博文视点Broadview
2020/06/12
2.5K0
Go语言函数的参数和返回值
一道正确率只有15%的命名返回值和闭包的问题
这道题考查的点就是命名返回值+闭包,把上面的代码换成等效的匿名返回值代码你就明白了:
Golang梦工厂
2022/07/11
5450
Go 100 mistakes之不正确的值比较
我们从一个具体的例子开始。我们将创建一个customer结构体,并使用 == 操作符来比较两个实例。下面的代码将会输出什么呢?
Go学堂
2023/01/31
1.1K0
HarmonyOS实战—滑动事件的坐标和返回值
1. 滑动事件获取手指位置 滑动事件的三个动作: [在这里插入图片描述] 获取手指的位置就涉及到坐标的概念,通过获取到 x、y、z就可以缺任意一个点的位置 [在这里插入图片描述] 手机中的坐标: [在这里插入图片描述] 除了 x、y轴,还有z轴,在鸿蒙手机当中,完整的坐标如下,是一个立体的三维体系,但平时z轴用的非常少,一般情况只需考虑x、y轴就行了。 [在这里插入图片描述] 结合滑动事件的三个动作和坐标来分析滑动 [在这里插入图片描述] [在这里插入图片描述] [在这里插入图片描述] 2. 获取按下时手指
兮动人
2021/08/23
1.1K0
HarmonyOS实战—滑动事件的坐标和返回值
Java 遍历对象的属性和值,封装返回 Map
有时候需要获取对象的属性值,属性少的话就好设置了,属性一多就不好设置了。 我们可以通过反射来遍历 UpdateWeb updateWeb = new UpdateWeb(); Field[] fields = updateWeb.getClass().getDeclaredFields(); for (Field field : fields){ field.setAccessible(true); String
Alone88
2019/11/11
7.6K0
ExecuteScalar()_getchar的返回值
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说ExecuteScalar()_getchar的返回值,希望能够帮助大家进步!!!
Java架构师必看
2022/06/19
1.7K0
[Python基础06]函数的参数&返回值
我们通常在进行一些功能处理的过程中,需要执行一行或者多行代码来完成整个业务流程的处理,如:
周小董
2022/04/12
4K0
[Python基础06]函数的参数&返回值
printf函数的返回值!
这样的题目第一眼看上去有一点懵,其实它考的就是printf函数的返回值,及输出字符的个数。 输出结果
lexingsen
2022/02/24
3.3K0
返回指针值的函数(2)
请自己理解,比较简单 /**对前面那个问题,输出有不及格成绩的学生的所有成绩**/ #include <stdio.h> #include <stdlib.h> int main() { float a[3][4]={{50,99,80,50},{55,60,85,90},{10,54,74,26}}; float *p; float *aa(float (*pt)[4]); int i; for(i=0;i<3;i++) { p=aa((
谙忆
2021/01/19
2.7K0
JS|函数的返回值
这个看似能输出结果,实则是在逻辑上是不合理的,我们函数是做某件事或者实现某种功能,而在上面的代码中,函数提供了‘aru’,结果自己却把该参数给输出了。这好比是鸡生了蛋,自己却把蛋给吃了。那我们吃蛋壳吗?所以,接下来我会介绍一种逻辑更严谨的代码。
算法与编程之美
2020/03/12
11.4K0
ExecuteScalar 返回值
Execute=执行; scalar=数量; so, 从字面意思来讲,可将ExecuteScalar 和ExecuteNonQuery对比来学习。 ExecuteScalar()方法的作用是: 执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。
全栈程序员站长
2022/09/14
1.9K0
函数的变量+返回值
函数的变量: 局部变量 和 全局变量 Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量 (1)、局部函数: #!/usr/bin/python def fun(): x = 100 ##定义一个内部的函数是 x = 100,只在fun() 内部有效。 print x fun() 执行结果: [[e
老七Linux
2018/05/31
4.9K0
controller方法的返回值
需要方法结束时,定义ModelAndView,将model和view分别进行设置。
用户10325771
2023/03/14
2K0
controller方法的返回值

相似问题

雪碧包和colorWithPatternImage

31

雪碧包归还?

50

雪碧的位置不正确

24

雪碧工具包-如何移动雪碧?

12

iAds禁用触动雪碧包和Swift

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文