擅长:python、mysql、java
<ul>
<li>当您只寻找第一个匹配时,使用<code>re.search</code>而不是<code>findall</code>会更清楚。你知道吗</li>
<li>如果可能有多个匹配项(正如使用<code>[0:1]</code>所建议的那样),请注意<code>.*</code>是贪婪的。例如,从字符串<code>-agent-orlando-fl-24408364-agent-orlando-fl-24408364</code>中,regex捕获<code>orlando-fl-24408364-agent-orlando-fl</code>。改用<code>.*?</code>。你知道吗</li>
<li><code>rpartition</code>string方法在最后一次出现分隔符时进行拆分,并始终返回三个字符串,这使得处理角点情况更加容易。你知道吗</li>
</ul>
<p>建议代码:</p>
<pre><code>m = re.search('-agent-(.*?)-\d', checkstr)
if m:
citystr = m.group(1)
city, _, state = citystr.rpartition('-')
if len(state) <> 2:
city = citystr
state = ''
city = city.replace('-', ' ').title()
state = state.upper()
</code></pre>