Python正则表达式从文本文件编译作业标题

时间:2014-03-20 03:28:37

标签: python regex

我有一个格式化的文本文件,每个列由制表符空格分隔:

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)

2 个答案:

答案 0 :(得分:0)

我不明白为什么拆分对你不起作用,但这里有一个正则表达式:

^[A-Z]+[ \t]+"\w+"[ \t]+(?P<jobtitle>[\w ]+)$

Regular expression visualization

Debuggex Demo

请注意,如果它真正以制表符分隔,您可以将[ \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)