我想用 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)

尽管根据您对问题的措辞,确实很难理解您要完成的任务,但这是我的想法。

  • 您有两个列表:list1list2请不要将您的列表命名为 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 现在将包含 abab,具体取决于 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)