Python⽤re正则化模块在字符串查特定字符串
实验需要,在⼀个含有⼏亿个字符的txt⽂件中查特定的字符串,⾸先⽤re模块进⾏查
1from time import clock
2import re
3 start=clock()
4 label_file = open("/home/ying/data/google_streetview_train_")
5 label_str = ad()
6 label_file.close()
7 filename = "2_0_pitch_95_yaw_95_lat_41.8975137_lng_-87.6268723.jpg"
8 start=clock()
9for match in re.finditer(filename, label_str):
10 s = match.start()
11 e = d()
12print(s)
13print(e)
14 end=clock()
15print(end-start)
re.finditer(filename, label_str)可以在label_str中查filename的位置,s=match.start()返回字符串开始的索引,d(),返回字符串结束的索引。程序运⾏的结果是
304091635
304091689
304096479
304096533
1.003844
耗时1s左右
同样的,由于txt⽂件中为⼀⾏⼀⾏的数据,可以⽤readlines进⾏遍历读取⽐较,程序如下
1from time import clock
2 start=clock()
3 data_label="/home/ying/data/google_streetview_train_"
4 filename = "2_0_pitch_95_yaw_95_lat_41.8975137_lng_-87.6268723.jpg"
5 file = open(data_label)
6 lines = adlines()
7print(len(lines))
8for line in lines:
9 cls = line.split()
正则匹配特定字符串10 fn = cls.pop(0)
11if fn==filename:
12break
13 end=clock()
14print(end-start)
运⾏结果如下:
1
3.335657
可见耗时有3s多,⽤正则化模块要快的多
另外,由于label_str中存在1.2_0_pitch_95_yaw_95_lat_41.8975137_lng_-87.6268723.jpg,所以⽤re模块寻时会返回两个结果,⽽⽤逐⾏读取的⽅式则返回⼀个值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论