擅长:python、mysql、java
<p>我得告诉你,我真的很讨厌<code>re.sub</code>。我不知道为什么,我没有一个很好的解释,但我避免它像瘟疫。我甚至不记得用过效果很差的,我只是不喜欢。。。。你知道吗</p>
<p>它不产生预期输出的原因是<code>re.sub</code>将返回字符串,而不管它是否与regex匹配。它有点像<code>"Hello there".replace("foo","bar")</code>,只是因为它找不到任何可以替换的东西,并不意味着它会丢弃你的字符串。我要做的是:</p>
<pre><code>pattern = r'(?P<country>\d{1,3})[- ](?P<area>\d{2,3})[- ]+(?P<number>\d{5,10})'
text = r"CountryCode={country},LocalAreaCode={area},number={number}"
for line in TEST_DATA:
match = re.match(pattern,line)
if not match: continue
print(text.format(**match.groupdict()))
</code></pre>