Разделение строки в произвольной позиции и добавление результирующих частей в список - PullRequest
2 голосов
/ 01 октября 2019

Я только начал с Python-кодирования и столкнулся с тем, что мне показалось очень легко решить (по крайней мере, с помощью Google ...):

У меня есть строка, которую я хочу разбить наслучайная позиция. Полученные части строки должны быть добавлены в список, например,

str = "abcdefg" должно стать -> list = ["abc","defg"]

В этом примере мне было предложено определить случайный разделительвнутри строки (с помощью randrange) разделите этот разделитель и соедините части вместе. Это прекрасно работает, я понял код и смог немного его изменить. Однако, когда строка содержит символ более одного раза, этот метод прерывается при каждом появлении из-за фиксированного разделителя.

Как можно достичь следующего:

str = "abcdabcd" --> list = ["abc","dabcd"]?

Я думал оперебирая символы строки, но как мне реализовать требование «разбить на случайную позицию»?

Заранее большое спасибо

Ответы [ 3 ]

1 голос
/ 01 октября 2019

Вы можете нарезать строку по случайно выбранному индексу:

import random
s = "abcdabcd"
i = random.randrange(len(s))
print([s[:i], s[i:]])
1 голос
/ 01 октября 2019

Вы можете использовать следующий код, который комментируется в вашу пользу:

# Use the random module to create a random number
import random
# Copy your test string
myStr = "abcdabcd"
# The highest value the random number could be is the length of the string
max_random = len(myStr)
# Create the random value using the random module
random_val = random.randrange(max_random)

# Create your new list by splitting the string first by:
# all characters up to the random value, then from the random value onwards
new_list = [myStr[:random_val], myStr[random_val:]]

# This is an example of splitting the string after 3, which you describe in your question
example_list = [myStr[:3], myStr[3:]]


# print it out
print(new_list)
print()
print(example_list)
0 голосов
/ 01 октября 2019

Вы можете разделить его с помощью нарезки и используя random.randint:

import random
my_str = 'somestring'
random_index = random.randint(0, len(my_str)-1)
my_list = [my_str[:random_index], my_str[random_index:]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...