有一个1万多行的txt文本,读取第一行的文字 append 到一个空列表list[]中,然后读取第二行的文字替换到列表中,依次循环直到最后一行,有什么高效率的办法?
1
xiaozi May 4, 2015 只要每行的长度不是很大的话,1w 行,小 case 吧;直接全部读到内存好了。
|
2
oxyflour May 4, 2015 with open(fileName, 'r') as fin:
for line in fin.readlines(): pass # do sth 试过读几百兆的文本,并不需要什么特别的处理 |
3
Septembers May 4, 2015 |
4
clino May 4, 2015
"读取第二行的文字替换到列表中"这是什么意思?
做完了最后剩下还是一个元素的list? |
5
seki May 4, 2015
一万行不多啊,除非你一行有几万字……不过同没看懂你的操作描述
|
6
frankzeng May 4, 2015 via Android 开销在磁盘io上,一万行很少的数据,读到内存中去
|
7
lonin OP |
9
lonin OP |
10
clino May 4, 2015
@lonin 你要一行行地读并且一行行地分析html?
这个可能对你有用: https://docs.python.org/2/library/htmlparser.html#example-html-parser-application 里面的feed可以一行行往里面填数据 |
11
fy May 4, 2015 @lonin 楼主确定标签是不闭合的吗?
底子还是这个正则: re.search(r'<(.*?)>.*?</\1>', '<p>123</p>2').group(0) '<p>123</p>' 思路是在读取操作中简单的分为两个状态: for i in lines: 状态1 尚未出现成对元素:继续读下一行,将本行结果和下一行合并 状态2 出现闭合元素:储存内容 举个栗子: [初始化] buf = '' buf += newline [1] buf : <p>hello 不匹配,continue [2] buf : <p>hello world!</p> 匹配,储存数据 buf = '' [3] ... [4] ... |
13
xxer May 6, 2015
readlines从内存使用情况看,效果很差
|