擅长:python、mysql、java
<p>我建议您使用<a href="https://docs.python.org/3/library/re.html" rel="nofollow noreferrer">positive lookahead, lookbehind and namedgroup</a>编写以下代码:</p>
<pre><code>>>> regexHOR = r'(?P<TopicID>TITLE-\S+-\d{2}-\d{2})[:;]\s*(?P<Title>[\w\s]+(?=Conditions))'
>>>
>>> regexOD = r'(?P<OpeningDate>(?<=Opening date )\d{1,2} \w+ \d{4})'
>>>
>>> regexDL = r'(?P<DeadLine>(?<=Deadline )\d+ \w+ \d+)'
>>>
>>>regex_pattern = re.compile('.*?'.join([regexHOR, regexOD, regexDL]), re.MULTILINE | re.DOTALL)
>>>
>>> for match in re.finditer(regex_pattern, f_contents):
csvfile.writerow([match.group('TopicID'), match.group('Title'), \
match.group('OpeningDate'), match.group('DeadLine')])
</code></pre>
<p>每次调用<code>csvfile.writerow</code>,都会写入一个新行,这就是为什么没有将每个循环迭代的所有项都写入同一行的原因</p>