我想用 Python 中的字母替换单词
I Would Like To Replace A Word With A Letter In Python
代码:
list = ['hello','world']
list2 = ['a','b']
string = 'hello'# should output a
string_fin = ''
for s in string:
for i, j in zip (list, list2):
if s == i:
string_fin += j
print(string_fin)
我想在 string = ''
中写入 hello or world
并获得输出 a or b
我得到
这没什么
发生这种情况的原因是因为 hello and world
的字符数比 a and b
多,当我尝试使用与 a or b
具有相同字符数的东西时
请帮忙
谢谢
最好将列表存储为字典,以便轻松查找:
mapping = {'hello':'a', 'world':'b'}
string = 'hello or world'
out = []
for s in string.split():
out.append( mapping.get( s, s ) )
print(' '.join(out))
纯粹主义者会注意到 for
循环可以变成 one-liner:
mapping = {'hello':'a', 'world':'b'}
string = 'hello or world'
out = ' '.join(mapping.get(s,s) for s in string.split())
print(out)
您的程序的主循环永远不会运行,因为 string
是空的!所以你的程序基本上是:
list = ['hello','world']
list2 = ['a','b']
string = ''
string_fin = ''
print(string_fin)
尽管根据您对问题的措辞,确实很难理解您要完成的任务,但这是我的想法。
- 您有两个列表:
list1
和 list2
(请不要将您的列表命名为 list
,因为它是保留关键字,请使用 list1
而不是!)
- 您想检查
string
中的每个词是否与第一个列表中的任何词匹配。
- 如果匹配,您希望从第二个列表中取出相应的单词或字母,并将其附加到字符串
string_fin
.
- 最后,当你遍历列表中的所有单词时,打印出
string_fin
的内容。
执行此操作的正确方法是拆分您的 string
变量,并将每个单词存储在其中。
string = 'hello or world'
stringWords = string.split()
现在,stringWords
包含 ['hello', 'or', 'world']
。但我认为您对 or
项不感兴趣。因此,您可以使用 remove()
.
从列表中删除此项
if 'or' in stringWords:
stringWords.remove('or')
现在你有你感兴趣的词了。我们想检查第一个列表中的任何词是否与这些词匹配。 (请记住,我将第一个列表从 list
重命名为 list1
以防止任何意外行为。)
for word in stringWords:
tempIndex = list1.index(word)
temp = list2[tempIndex]
string_fin += temp
但是,如果未找到匹配项,则使用 index
会引发 ValueError
,因此根据您的程序逻辑,您可能需要捕获异常并进行处理。
字符串 string_fin
现在将包含 ab
或 a
或 b
,具体取决于 string
.
中的值
现在,既然您想打印类似 a or b
的内容,您可以创建一个列表并将匹配的单词存储在其中,然后使用 or
分隔符加入该列表。
string_fin = (' or ').join(tempList)
现在完整的程序如下所示:
list1 = ['hello', 'world']
list2 = ['a', 'b']
string = 'hello or world'
tempList = []
stringWords = string.split()
if 'or' in stringWords:
stringWords.remove('or')
for word in stringWords:
tempIndex = list1.index(word)
temp = list2[tempIndex]
tempList.append(temp)
string_fin = ' or '.join(tempList)
print(string_fin)
代码:
list = ['hello','world']
list2 = ['a','b']
string = 'hello'# should output a
string_fin = ''
for s in string:
for i, j in zip (list, list2):
if s == i:
string_fin += j
print(string_fin)
我想在 string = ''
中写入 hello or world
并获得输出 a or b
我得到
这没什么
发生这种情况的原因是因为 hello and world
的字符数比 a and b
多,当我尝试使用与 a or b
具有相同字符数的东西时
请帮忙
谢谢
最好将列表存储为字典,以便轻松查找:
mapping = {'hello':'a', 'world':'b'}
string = 'hello or world'
out = []
for s in string.split():
out.append( mapping.get( s, s ) )
print(' '.join(out))
纯粹主义者会注意到 for
循环可以变成 one-liner:
mapping = {'hello':'a', 'world':'b'}
string = 'hello or world'
out = ' '.join(mapping.get(s,s) for s in string.split())
print(out)
您的程序的主循环永远不会运行,因为 string
是空的!所以你的程序基本上是:
list = ['hello','world']
list2 = ['a','b']
string = ''
string_fin = ''
print(string_fin)
尽管根据您对问题的措辞,确实很难理解您要完成的任务,但这是我的想法。
- 您有两个列表:
list1
和list2
(请不要将您的列表命名为list
,因为它是保留关键字,请使用list1
而不是!) - 您想检查
string
中的每个词是否与第一个列表中的任何词匹配。 - 如果匹配,您希望从第二个列表中取出相应的单词或字母,并将其附加到字符串
string_fin
. - 最后,当你遍历列表中的所有单词时,打印出
string_fin
的内容。
执行此操作的正确方法是拆分您的 string
变量,并将每个单词存储在其中。
string = 'hello or world'
stringWords = string.split()
现在,stringWords
包含 ['hello', 'or', 'world']
。但我认为您对 or
项不感兴趣。因此,您可以使用 remove()
.
if 'or' in stringWords:
stringWords.remove('or')
现在你有你感兴趣的词了。我们想检查第一个列表中的任何词是否与这些词匹配。 (请记住,我将第一个列表从 list
重命名为 list1
以防止任何意外行为。)
for word in stringWords:
tempIndex = list1.index(word)
temp = list2[tempIndex]
string_fin += temp
但是,如果未找到匹配项,则使用 index
会引发 ValueError
,因此根据您的程序逻辑,您可能需要捕获异常并进行处理。
字符串 string_fin
现在将包含 ab
或 a
或 b
,具体取决于 string
.
现在,既然您想打印类似 a or b
的内容,您可以创建一个列表并将匹配的单词存储在其中,然后使用 or
分隔符加入该列表。
string_fin = (' or ').join(tempList)
现在完整的程序如下所示:
list1 = ['hello', 'world']
list2 = ['a', 'b']
string = 'hello or world'
tempList = []
stringWords = string.split()
if 'or' in stringWords:
stringWords.remove('or')
for word in stringWords:
tempIndex = list1.index(word)
temp = list2[tempIndex]
tempList.append(temp)
string_fin = ' or '.join(tempList)
print(string_fin)