<p>我有一个类似于<code>rdb_master_mongodb</code>的字符串,其中<code>rdb_</code>是固定的,<code>master</code>是一个数据库名称,可以是任何东西,<code>mongodb</code>可以是<code>mysql</code>、<code>mongodb</code>、<code>postgres</code>、<code>mssql</code>或<code>bdb</code>中的一个。我需要从字典中获取这个字符串的值,它的值在<code>myDict[master][mongodb]</code>中。为了得到这个,我需要分割字符串<code>rdb_master_mongodb</code>,并得到<code>master</code>和<code>mongodb</code>的值。我不能使用split,因为有时字符串会变成<code>rdb_master_test_mongodb</code>。因此,我必须使用<code>endswith</code>来获得确切的密钥。然而,<code>endswith</code>在列表上不起作用。你知道吗</p>
<p>我必须从一个元组中得到匹配的元组值。现在我这样做:</p>
<pre><code>import re
name = 'rdb_master_mongodb'
s = re.sub('rdb_', "", name)
VALID_DB = ('mysql', 'postgres', 'mongodb', 'mssql', 'bdb')
(a, b, c, d, e) = VALID_DB
if s.endswith(a):
db = a
if s.endswith(b):
db = b
if s.endswith(c):
db = c
if s.endswith(d):
db = d
if s.endswith(e):
db = e
db_name = re.sub('_'+db, "", s)
print db_name+" is "+db
</code></pre>
<p>有没有更好的办法?你知道吗</p>