
Python 新手
有个文本文件,格式大概是这样的
一些内容.... ###START RECORD 一些内容.... ###END 一些内容... 我想读取从 ###START RECORD 开始到 ###END 这段的文本
请问有什么比较好的方法吗?
1 ysc3839 Jul 18, 2017 via Android 用 find 找到两个 pattern 然后 string[find1+len (pattern1):find2] |
2 misaka19000 Jul 18, 2017 via Android 应该不能,操作系统读取文件的系统调用不能根据文件内容来判断吧,只能读到内存中再做处理了 |
3 ryd994 Jul 18, 2017 via Android 一行行读了判断呗……… |
4 zeraba Jul 18, 2017 via Android 呐 把每一行先读出来 就像 3 楼说的 存到列表 然后开始找开始行和结束行的第一个索引 找到之后把内容存到另一个列表 并删除旧列表里面响应内容 然后继续循环 |
5 dawnven PRO 正则表达式 |
6 dangyuluo Jul 18, 2017 感觉效率比较高的方法是一行一行读,然后根据格式判断。 正则表达式就有点杀鸡用牛刀的感觉了。 |
7 daiqiangbudainiu OP @dangyuluo 正则表达式效率会比较低吗? |
8 wzha2008 Jul 18, 2017 按行读入内存,读到 start 后每行加入列表,再读到 end 就 break |
9 yylucifer Jul 18, 2017 @warcraft1236 用正则文本多了会很低。。 要讲效率,应该一行一行处理是比较高的 |
10 ToughGuy Jul 18, 2017 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) |
11 scriptB0y Jul 18, 2017 查一下是第几行然后 seed |
12 daiqiangbudainiu OP @ToughGuy 多谢,我明白了 |
13 VYSE Jul 18, 2017 via Android mmap |