我正在尝试在文件中寻找令牌':path,',然后将以下所有(任意数字计数)数字读取为数字(因此对于':path,123',我在文件中寻找,然后读取整数 123)。然后读取当前搜索位置和 pos+123 之间的字符(将它们存储在列表或其他任何内容中)。然后寻找 ':path' 的下一个匹配项,然后重复该过程。
我想要一个有点像的功能:
def fregseek(文件,current_seek,/regex/): . . value_found = ? # 在 :path,[0-9]+ 之后读取下一个 N 字符的结果 . . 返回 next_start_seek, value_found
一行中可能有任意数量的 ':path,' 匹配,并且该字符串可能出现在 ',' 之后指定的字符数内。我写了一堆乱七八糟的垃圾,每行都读到,然后每行 chomps 匹配所指示的前 N 个字符,然后继续处理字符串,直到它被全部吃完。然后读取下一个字符串,依此类推。
这太可怕了,当我真正需要做的就是寻找时,我不想不得不从一个潜在的巨大文件中删除所有行(特别是因为换行符是无关紧要的,所以有一个额外的处理步骤只是因为行很容易从文件中提取是荒谬的)。
所以,这就是我想要解决的问题。我需要寻找一个匹配,读取一个值,从该值的末尾继续寻找下一个匹配,依此类推,直到文件用完。
如果有人可以帮助我,我会很高兴收到他们的来信:)
如果可能,我想避免使用非标准库,我也想要最短的代码,但这是我最不关心的问题(速度和内存消耗是重要因素,但我不希望额外 50 loc 只是为了引导一些里面有一个小功能的图书馆,只要我知道它是什么,我就可以把它撕掉)。
我更喜欢 python 代码,但是,如果 perl 在这方面胜过 python,我将使用 perl,我也愿意接受聪明的 sed/awk/bash 脚本等,只要它们不是非常慢。
首先十分感谢。