【发布时间】:2014-01-14 21:20:03
【问题描述】:
我有一个数据集,其中包含纯文本、关于计算机的描述,它们如下所示:
我正在尝试根据文本预测价格,这是我的方法。 由于我知道它们都是计算机,所以我会尝试使用正则表达式来解析出 CPU 频率、内存、磁盘容量和屏幕大小......所以你会有一个固定列数的矩阵......和您可以运行常规算法来预测价格(随机森林、线性回归......)。
但是,我在解析列时遇到了正则表达式部分: 假设我正在尝试从文本中解析频率,我想它会是某个数字,后跟“GHz”。
>>> re.findall(re.compile('([.\d]+) GHz'), '2.2 GHz 32 GB')
['2.2']
这很好,但是事实证明正则表达式并不是那么好。以下是我的正则表达式失败的几个条件:
>>> re.findall(re.compile('([.\d]+) GHz'), '2.2 ghz 32 GB')
[]
>>> re.findall(re.compile('([.\d]+) GHz'), '2.2 Ghz 32 GB')
[]
>>> re.findall(re.compile('([.\d]+) GHz'), '2.2GHz 32 GB')
[]
我对正则表达式不太擅长,我想知道谁能告诉我如何找到后面跟着“ghz”或“gigaHerz”的数字.. 之间可能有一些空格数量和度量单位。
PS:我知道 R,我认为这可能是一个非常笼统的统计问题,即“如何根据词袋做出预测”.. 如果有人能指出更好的方法,那将不胜感激!
【问题讨论】:
-
(?i)[\d.]+\s*(?:ghz|gigaHerz)怎么样?或[\d.]+\s*(?i:ghz|gigaHerz)