gpt4 book ai didi

Python:交换列表中的两个字符串

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:31 25 4
gpt4 key购买 nike

好的,所以我在将列表中的字符串的一部分与另一个字符串的一部分交换时遇到了问题。我在这个网站上看到了其他类似的问题,但似乎没有一个对我有用。

假设我有一个列表:

sentList = ['i like math', 'i am a cs expert']

现在我想使用由用户输入确定的变量将“math”切换为“cs”。

currentWord = input('Swap word: ')
newWord = input('with word: ')

那么,现在我该如何交换这两者,以便我的列表返回以下内容:

sentList = ['i like cs', 'i am a math expert']

一如既往,感谢您的帮助。我想我可以使用替换功能,但不确定如何使用。我想它看起来像这样:

sentList = [sentListN.replace(currentWord, newWord) for sentListN in sentList]

但是,显然那是行不通的。

最佳答案

使用 list comprehension 的单行代码。

[sent.replace(currentWord,newWord) if sent.find(currentWord)>=0 else sent.replace(newWord,currentWord) for sent in sentList]

所以,

IN: sentList = ['i like math', 'i am a cs expert']
IN : currentWord = "math"
IN : newWord = "cs"
OUT : ['i like cs', 'i am a math expert']

这里,if sent.find('math')>=0 将找出字符串是否包含 'math' ,如果是,则将其替换为 'cs',否则它将 'cs' 替换为 'math'。如果字符串两者都不包含,那么它也会打印原始字符串,因为替换仅在找到子字符串时才有效。


编辑:@Rawing指出,上面的代码中有一些错误。因此,这是将处理所有情况的新代码。

我已经使用 re.sub 来处理 only words 的替换,替换算法是你如何交换两个变量的算法,例如 x y,我们引入了一个临时变量 t 来帮助交换:t = x; x = y; y = t。选择这种方法是因为我们必须同时进行多个替换

from re import sub

for s in sentList:

#replace 'math' with '%math_temp%' in s (here '%math_temp%' is a dummy placeholder that we need to later substitute with 'cs')
temp1 = sub(r'\bmath\b','%math_temp%' , s)

#replace 'cs' with 'math' in temp1
temp2 = sub(r'\bcs\b','math', temp1)

#replace '%math_temp%' with 'cs' in temp2
s = sub('%math_temp%','cs', temp2)

print(s)

所以这次在一个更大的测试用例上,我们得到:

IN : sentList = ['i like math', 'i am a cs expert', 'math cs', 'mathematics']
IN : currentWord = "math"
IN : newWord = "cs"

OUT : i like cs
i am a math expert
cs math
mathematics

关于Python:交换列表中的两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com