Разделить строку на 2 в Python - PullRequest
25 голосов
/ 25 января 2011

Есть ли способ разбить строку на 2 равные половины без использования цикла в Python?

Ответы [ 5 ]

53 голосов
/ 25 января 2011
firstpart, secondpart = string[:len(string)/2], string[len(string)/2:]
6 голосов
/ 25 января 2011
a,b = given_str[:len(given_str)/2], given_str[len(given_str)/2:]
1 голос
/ 26 января 2018

В 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 голосов
/ 14 апреля 2019

Незначительное исправление Приведенное выше решение для строки ниже приведет к ошибке

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):]

0 голосов
/ 24 февраля 2017

Другой возможный подход - использовать divmod. rem используется для добавления среднего символа вперед (если он нечетный).

def split(s):
    half, rem = divmod(len(s), 2)
    return s[:half + rem], s[half + rem:]

frontA, backA = split('abcde')
...