如何用另一个字符串的前两个字符替换一个字符串的前两个字符?

4

我知道这个字符替换的问题可能已经被提出了,我也查看过它们,但它们仍然不能回答我的问题。我也是Python的新手,所以我的理解并不是很好。

def stringMix():
    MixA = print (userStringA.replace([0:2],userStringB[0:2]))
    MixB = print (userStringB.replace([0:2],userStringB[0:2]))

userStringA = input("Please enter a string consisting of over two characters ")
userStringB = input("Please enter a second string consisting of over two characters ")

print (userStringA)
print (userStringB)

print (MixA, MixB)

这是我的代码,但是当我运行它时,会出现语法错误并突出显示冒号。我只想将userStringA的前两个字符替换为userStringB的前两个字符,反之亦然。


不清楚您是想替换所有出现的前两个字母,还是只替换第一个单词的前两个字母。 - Joran Beasley
1
userStringB[:2]+userStringA[2:] - inspectorG4dget
相当字面上,只有前两个字符。 - The White Wolf
4个回答

3

您没有正确使用方法调用。即,您将stringMix定义为函数,但使用超出函数范围的变量。我认为您想要做的是:

def stringMix(a,b):
  print (a.replace([0:2]b[0:2]))
  print (b.replace([0:2],a[0:2]))

userStringA = input("Please enter a string consisting of over two characters ")
userStringB = input("Please enter a second string consisting of over two characters ")

print (userStringA)
print (userStringB)

stringMix(userStringA,userStringB)

然而,正如之前的回答和评论所建议的那样,str.replace并不是实现这一目的的正确方式。相反,您应该使用以下方法:

def stringMix(a,b):
  print (a[0:2]+b[2:])
  print (b[0:2]+a[2:])

利用字符串切片和拼接的优势


啊,我明白了,你只是打印了没有前两个字符的字符串,而不是使用替换机制。非常感谢! - The White Wolf
是的,因为你只需要打印它而不需要维护这些值。但如果你需要维护这些值,你可以像这样做:a = b[0:2] + a[2:] - R Nar
1
@TheWhiteWolf:str.replace 不正确的原因是它会替换所有出现的内容:'fifty-five'.replace('fi', 'xx') 会得到 'xxfty-xxve' - Steven Rumbalski

2
只需执行以下操作:
print userStringB[:2] + userStringA[2:]

and

print userStringA[:2] + userStringB[2:]

哇,那真的起作用了!但是它是如何工作的?请解释一下,谢谢。 - The White Wolf
这在 Python 中被称为切片。userStringB[:2] 将返回 userStringB 的前 2 个字符,而 userStringA[2:] 返回除前 2 个字符以外的所有字符,然后我们将这两个返回的字符串连接起来创建结果字符串。 - Muhammad Tahir
请查看此链接以获取详细说明 https://dev59.com/D3RB5IYBdhLWcg3wyqOo - Muhammad Tahir

1
userStringA,userStringB = userStringB[:2] + userStringA[2:],userStringA[:2] + userStringB[2:]

我想...


0

replace 是一个方法,如果您想让 Python 在字符串中搜索子字符串,然后将其替换为另一个字符串,就可以调用该方法。你想做的只是

MixA = userStringA[0:2] + userStringB[2:] #from 2 till end
MixB = userStringB[0:2] + userStringA[2:] #from 2 till end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接