我有一个格式化的文本文件,每个列由制表符空格分隔:
CAMPUS NAME TITLE
AUJV "Judith" Research Technician Associate
BRGE "Aagesen" ADJUNCT CLINICAL INSTRUCTOR
YJFF "Matthew" HOUSE OFFICER IV
我想写一个正则表达式,找到第三列的字符即。在第二个制表符空格之后,将它们标记为“jobtitle”。目的是将作业标题组合在一起,以便我可以按频率对它们进行排序。
这是我到目前为止所做的,我确信我匹配错误的字符:
jobtitle_re = re.compile(r"[^\t\w\t]+,(?P<jobtitle>\w+)", re.I)
我的其余代码是这样的:
for line in salary_file.readlines():
line.rstrip()
(campus, name, title) = line.split('\t')
jobtitle = jobtitle_re.match(title).group('jobtitle')
titlecount[jobtitle] = titlecount.setdedault(jobtitle,0)+1
print "\nMost common job titles\n-------"
i = 0
for title, titlecount in sorted(titlecount.iteritems(), key=lambda (k,v): (v,k), reverse=True):
i += 1
print "%d. %s\t%s" % (i,title, titlecount)
答案 0 :(得分:0)
我不明白为什么拆分对你不起作用,但这里有一个正则表达式:
^[A-Z]+[ \t]+"\w+"[ \t]+(?P<jobtitle>[\w ]+)$
请注意,如果它真正以制表符分隔,您可以将[ \t]+
更改为\t+
答案 1 :(得分:0)
我也不明白为什么你需要正则表达式。怎么样......
from collections import Counter
titles = []
for line in salary_file.readlines():
line.rstrip()
(campus, name, title) = line.split('\t')
titles.append(title)
print "\nMost common job titles\n-------"
for i, (title, titlecount) in enumerate(Counter(titles).most_common()):
print "%d. %s\t%s" % (i, title, titlecount)