【发布时间】:2018-06-10 20:28:02
【问题描述】:
我正在尝试提取文本中嵌入的 6 位数字。数字总是以零开头,总是有 6 位数字,在第 4 位数字之后用句点分隔,如下所示:
0 0133.02[text] in location [texttext](text) numbers
1 0121.08[text] in location [texttext](text) numbers
...
我运行以下命令:
import re
filtered = re.findall("0\d\d\d[.]\d\d", str(df['col']))
有478行需要解析,每行包含上述数字。但是,filtered 结果只输出 60,即使我更改了正则表达式格式。有趣的是,filtered 似乎主要由 478 行中第一行和最后几行的数字组成,而不是中间的数字?
编辑: 我提取了有效与无效的行,发现有效的行是前 30 行和后 30 行(0-29、448-477)。
以下是无效行的示例(446、447):
446 0005.00 [CT] in Vancouver [CMA] (B.C.) 44160
447 0170.05 [CT] in Vancouver [CMA] (B.C.) 44006
还有一个有效的行示例(448、449):
448 0050.04 [CT] in Vancouver [CMA] (B.C.) 43995
449 0067.01 [CT] in Vancouver [CMA] (B.C.) 43989
【问题讨论】:
-
不看数据就很难看出哪里出了问题。您的正则表达式应该可以工作。
-
您的问题与这个有关吗? stackoverflow.com/questions/15325182/…
-
尝试
'\d+\.?\d*'并查看结果数。可能您的某些元素与您的预期格式不匹配 -
您需要共享更多数据才能使其正常工作。我们无法猜测出了什么问题。提取不起作用的行怎么样?