擅长:python、mysql、java
<p>对于如此复杂的任务,编写一个简单的解析器会更简单。即使不编写解析器,类似这样的东西仍然比regexp更容易管理:</p>
<pre><code>f0 = '201308 - (82608) - MAC 2233-007-Methods of Calculus - Klingler, Lee.txt'
f1 = '201308 - (12345) - ABC 2233L-007-course Name 1 - last, first.txt'
f2 = '@ @ @ @ @ @ 123 abc - a-1 - b-2.txt'
f3 = '201308-(82609) -MAC 2233-007-Methods of Calculus - Klingler, Lee.txt'
f4 = '201308 - (12345)-ABC 2233L-007-course Name-last, first.txt'
f5 = '201308-(12345)-ABC 2233L-007-course Name-last, first.txt'
for f in [f0,f1,f2,f3,f4,f5]:
parts = f.split('-')
parts = [p.strip() for p in parts]
for i in range(0, len(parts)):
if i == 0 or i == 4:
parts[i] = parts[i] + ' '
elif i == 2:
parts[i] = ' ' + parts[i]
elif i != 3:
parts[i] = ' ' + parts[i] + ' '
result = "-".join(parts)
print result
</code></pre>
<p>如果输入的数据与您所展示的基本相似,那么这些ifs中很少有能够工作的。在</p>
<p>结果:</p>
^{pr2}$