在Python中将字符串分割成两个

54

有没有一种方法可以在Python中不使用循环将字符串分成两个相等的部分?

6个回答

84

Python 2:

firstpart, secondpart = string[:len(string)/2], string[len(string)/2:]

Python 3:

firstpart, secondpart = string[:len(string)//2], string[len(string)//2:]

4
甚至可以使用 firstpart, secondpart = string[::2], string[1::2],因为问题并没有指定这些部分必须是连续的。 - Duncan
23
在Python3中: firstpart, secondpart = string[:len(string)//2], string[len(string)//2:] 的意思是将字符串 string 分成两个部分,第一部分包含前一半的字符,第二部分包含后一半的字符。 - uchar
这个答案有点令人困惑,因为字符串通常代表关键字 - 但是在这里变量是指... - Dominik Lemberger
@Dominik string不是一个关键字,虽然它是一个模块,如果这是你想到的东西。 - wjandrea
切片索引必须是整数,firstpart、secondpart = string[:int(len(string)/2)], string[int(len(string))/2:] - Shankara Narayana

10

建议使用string[(len(string)-1)//2:], string[:(len(string)-1)//2+1],以考虑字符串长度为奇数的情况!

这种方法在edx上已经验证过,非常有效。

first_half  = s[:len(s)//2]
second_half = s[len(s)//2:]

7
a,b = given_str[:len(given_str)/2], given_str[len(given_str)/2:]

4
另一种可能的方法是使用divmod。 如果是奇数,则使用rem将中间字符附加到前面。
def split(s):
    half, rem = divmod(len(s), 2)
    return s[:half + rem], s[half + rem:]

frontA, backA = split('abcde')

谢谢。我一直在寻找这个答案。没有人提到字符串的奇怪长度。 - Manoj Kumar

1
在Python 3中:
如果你想要类似于
madam => ma d am
maam => ma am的效果。
first_half  = s[0:len(s)//2]
second_half = s[len(s)//2 if len(s)%2 == 0 else ((len(s)//2)+1):]

0

小修正:上述解决方案对于以下字符串将会抛出错误。

string = '1116833058840293381'
firstpart, secondpart = string[:len(string)/2], string[len(string)/2:]

你可以执行 int(len(string)/2) 来得到正确的答案。

firstpart, secondpart = string[:int(len(string)/2)], string[int(len(string)/2):]


你应该使用//来代替/进行除法运算。 - AhmedO

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