Python 新手
有个文本文件,格式大概是这样的
一些内容....
###START RECORD
一些内容....
###END
一些内容...
我想读取从 ###START RECORD 开始到 ###END 这段的文本
请问有什么比较好的方法吗?
|  |      1ysc3839      2017-07-18 00:42:54 +08:00 via Android 用 find 找到两个 pattern 然后 string[find1+len (pattern1):find2] | 
|  |      2misaka19000      2017-07-18 00:46:36 +08:00 via Android 应该不能,操作系统读取文件的系统调用不能根据文件内容来判断吧,只能读到内存中再做处理了 | 
|  |      3ryd994      2017-07-18 06:36:30 +08:00 via Android 一行行读了判断呗……… | 
|      4zeraba      2017-07-18 08:04:50 +08:00 via Android 呐 把每一行先读出来 就像 3 楼说的 存到列表 然后开始找开始行和结束行的第一个索引 找到之后把内容存到另一个列表 并删除旧列表里面响应内容 然后继续循环 | 
|  |      5dawnven      2017-07-18 08:13:04 +08:00 正则表达式 | 
|  |      6dangyuluo      2017-07-18 08:46:37 +08:00 感觉效率比较高的方法是一行一行读,然后根据格式判断。 正则表达式就有点杀鸡用牛刀的感觉了。 | 
|      7warcraft1236 OP @dangyuluo 正则表达式效率会比较低吗? | 
|  |      8wzha2008      2017-07-18 10:12:58 +08:00 按行读入内存,读到 start 后每行加入列表,再读到 end 就 break | 
|  |      9yylucifer      2017-07-18 11:08:13 +08:00 @warcraft1236 用正则文本多了会很低。。 要讲效率,应该一行一行处理是比较高的 | 
|      10ToughGuy      2017-07-18 11:38:59 +08:00  1 def read_part(filename, start='###START RECORD', end='###END'): ----content = [] ----recording = False ----with open(filename) as f: --------for line in f: ------------line = line.strip() ------------if line == end: ----------------break ------------if recording: ----------------content.append(line) ------------if line == start: ----------------recording = True ----return '\n'.join(content) | 
|  |      11scriptB0y      2017-07-18 11:52:08 +08:00 查一下是第几行然后 seed | 
|      12warcraft1236 OP @ToughGuy 多谢,我明白了 | 
|  |      13VYSE      2017-07-18 13:37:36 +08:00 via Android mmap |