Python 在字符串中搜索字典值
我有一本字典,我想看看astring是否包含字典中的任何键。如果是这样,我想用字典中相应的值替换它Python 在字符串中搜索字典值,python,python-2.7,Python,Python 2.7,我有一本字典,我想看看astring是否包含字典中的任何键。如果是这样,我想用字典中相应的值替换它 states = { 'Alaska' : 'AK', 'Alabama' : 'AL',} astring = "I love Alaska" for state in states: if state in astring: print astring.replace(state, state.value()) 这当然不起作用,因为在使用For
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',}
astring = "I love Alaska"
for state in states:
if state in astring:
print astring.replace(state, state.value())
这当然不起作用,因为在使用For循环遍历键时,python将状态视为字符串。因此,state没有值()。您可以使用
for
循环中的键作为states dict的键。这应该对您有用
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',}
astring = "I love Alaska"
for state in states:
if state in astring:
print astring.replace(state, states[state])
这可能效率较低,但你也可以这样做
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',}
astring = "I love Alaska"
for state, abbreviation in states.items():
if state in astring:
print astring.replace(state, abbreviation)
您可以使用
for
循环中的键作为states dict的键。这应该对您有用
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',}
astring = "I love Alaska"
for state in states:
if state in astring:
print astring.replace(state, states[state])
这可能效率较低,但你也可以这样做
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',}
astring = "I love Alaska"
for state, abbreviation in states.items():
if state in astring:
print astring.replace(state, abbreviation)
变量
状态
是一个字符串,没有方法.value()
。如果要同时使用键和值,我建议迭代这些条目:
for state, abbr in states.items():
if state in astring:
print astring.replace(state, abbr)
变量
状态
是一个字符串,没有方法.value()
。如果要同时使用键和值,我建议迭代这些条目:
for state, abbr in states.items():
if state in astring:
print astring.replace(state, abbr)
考虑一下astring='I love Alaska and Alabama'的例子。然后使用
new_string = ' '.join([states[word] if word in states else word for word in astring.split()])
#'I love AK and AL'
考虑一下astring='I love Alaska and Alabama'的例子。然后使用
new_string = ' '.join([states[word] if word in states else word for word in astring.split()])
#'I love AK and AL'
另一种方式,较慢但较短:
import re
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',
}
# build a regexp
pattern = re.compile(
r'\b(%s)\b' % '|'.join(re.escape(needle) for needle in states)
)
astring = "I love Alaska"
print pattern.sub(lambda match: states.get(match.group()) or match.group(), astring)
另一种方式,较慢但较短:
import re
states = {
'Alaska' : 'AK',
'Alabama' : 'AL',
}
# build a regexp
pattern = re.compile(
r'\b(%s)\b' % '|'.join(re.escape(needle) for needle in states)
)
astring = "I love Alaska"
print pattern.sub(lambda match: states.get(match.group()) or match.group(), astring)
@ChrisJ.Vargo没问题,很高兴我能帮上忙。@ChrisJ.Vargo没问题,很高兴我能帮上忙。为Python2.7推荐
states.iteritems()
,是的,但是在为Python 3更新代码时,您必须将其更新回items()
。:/(我建议所有新的/当前的工作都使用Python 3!)建议Python2使用states.iteritems()
。7是的,但是在为Python 3更新代码时,您必须将其更新回items()
。:/(我建议所有新的/当前的工作都使用Python 3!)是否要替换同一字符串中的每个单词?或者制作多个字符串,替换每个字符串中状态的一个单词?例如,如果astring='I love Alaska and Alabama',您想要两个字符串:'I love AK and Alabama','I love Alaska and AL'
,还是想要一个字符串:'I love AK and AL'
您想要替换同一字符串中的每个单词吗?或者制作多个字符串,替换每个字符串中状态的一个单词?例如,如果astring='I love Alaska and Alabama',您想要两个字符串:'I love AK and Alabama','I love Alaska and AL'
,还是想要一个字符串:'I love AK AK and AL'