【发布时间】:2015-11-23 04:15:08
【问题描述】:
这是我的示例数据
78|Indonesia|Pamela|Reid|preid25@gravatar.com|147.3.67.193
我想得到结果为
Indonesia
目前我正在对字符串使用拆分并访问该值。但我想使用正则表达式。
需要注意的一些条件: 数据可能为空 数据将不包含管道 (|)
我想使用正则表达式而不是拆分,因为我认为正则表达式更有效。我希望它尽可能高效的原因是因为源文件是 70gb。
编辑:
这是我将在其中使用它的整个代码
def main(argv):
mylist = set();
input_file = open("test.txt", 'r')
for row in input_file:
rowsplit = row.split("|");
if rowsplit[1] !='':
if rowsplit[1] in mylist:
filename= "bby_"+rowsplit[1]+".dat";
existingFile=open(filename,'a')
existingFile.write(row);
existingFile.close()
else:
mylist.add(rowsplit[1])
filename= "bby_"+rowsplit[1]+".dat";
newFile = open(filename,'a')
newFile.write(row);
newFile.close();
else:
print "Empty"
print mylist
我只是对现在应该使用哪个答案感到困惑:(
我只是想让这段代码快一点。就是这样。
【问题讨论】:
-
你可以逐行解析它,然后根据知识没关系
-
如果有一个管道,总会有多个管道,或者管道可以出现在任何地方吗?
-
@PadraicCunningham 我不明白你在说什么
-
我的意思是有管道字符的行总是看起来像你的输入示例
-
Regex 非常灵活,但这种灵活性是有代价的。正如 Yaroslav Admin 的回答所示,使用正则表达式执行此任务比使用
str.split方法慢得多。