Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字符串中搜索字典值_Python_Python 2.7 - Fatal编程技术网

Python 在字符串中搜索字典值

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

我有一本字典,我想看看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循环遍历键时,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'