小编sil*_*nky的帖子

使用python在大文件中寻找正则表达式

我正在尝试在文件中寻找令牌 ':path,',然后将以下所有(任意数字计数)数字读取为数字(因此对于 ':path,123' 我寻找 , in file 然后读取整数 123)。然后读取当前搜索位置和 pos+123 之间的字符(将它们存储在列表中或其他任何位置)。然后寻找直到下一个匹配 ':path' 并重复该过程。

我想要一个有点像的功能:

def fregseek(FILE, current_seek, /regex/):

.
.
  value_found = ? # :path,[0-9]+ 之后读取下 N 个字符的结果
.
.
  返回 next_start_seek, value_found

一行中可能有任意数量的 ':path,' 匹配项,并且该字符串可能出现在 ',' 之后指定的字符数内。我写了一堆乱七八糟的垃圾,在每一行中读取,然后对于匹配指示的前 N ​​个字符的每一行 chomps,然后继续处理字符串,直到它全部被吃掉。然后读取下一个字符串,依此类推。

这太可怕了,当我真正需要做的只是查找时,我不想从一个潜在的巨大文件中删除所有行(特别是因为换行符无关紧要,所以有一个额外的处理步骤只是因为行很容易从文件中提取是荒谬的)。

所以,就是这样,这就是我想要解决的问题。我需要寻找匹配项,读取一个值,从该值的末尾继续寻找下一个匹配项,依此类推,直到文件用完为止。

如果有人能帮我解决这个问题,我会很高兴收到他们的来信:)

如果可能的话,我想避免使用非标准库,我也想要最短的代码,但这是我最不关心的(速度和内存消耗是重要因素,但我不希望额外的 50 loc 只是为了引导一些一个带有小功能的库,如果我知道它是什么,我就可以撕掉它)。

我更喜欢 python 代码,但是,如果 perl 在这方面胜过 python,我将使用 perl,我也愿意接受聪明的 sed/awk/bash 脚本等,只要它们不是特别慢。

首先十分感谢。

python regex perl seek

5
推荐指数
1
解决办法
2627
查看次数

标签 统计

perl ×1

python ×1

regex ×1

seek ×1