Разбить строку, но заменить другой строкой и получить список - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь разбить строку, но она должна быть заменена на другую строку и возвращена в виде списка. Трудно объяснить, вот пример:

У меня есть строка в переменной a:

a = "Hello World!"

Я хочу список такой, что:

a.split("Hello").replace("Hey") == ["Hey"," World!"]

Это означает, что я хочу разделить строку и написать другую строку для этого разделенного элемента в списке. ТАК если a это

a = "Hello World! Hello Everybody"

и я использую что-то вроде a.split("Hello").replace("Hey"), тогда вывод должен быть:

a = ["Hey"," World! ","Hey"," Everybody"]

Как мне этого добиться?

Ответы [ 5 ]

0 голосов
/ 04 сентября 2018

Вы можете сделать это с итерацией:

a=a.split(' ')
for word in a:
    if word=='Hello':
      a[a.index(word)]='Hey'
0 голосов
/ 04 сентября 2018

Было непонятно, хотите ли вы разделить пробелом или заглавными буквами.

import re    

#Replace all 'Hello' with 'Hey'

a = 'HelloWorldHelloEverybody'
a = a.replace('Hello', 'Hey')

#This will separate the string by uppercase character

re.findall('[A-Z][^A-Z]*', a) #['Hey', 'World' ,'Hey' ,'Everybody']
0 голосов
/ 04 сентября 2018

эта функция может это сделать

def replace_split(s, old, new):
    return sum([[blk, new for blk] in s.split(old)], [])[:-1]
0 голосов
/ 04 сентября 2018

Из ваших примеров очень похоже, что вы хотите заменить все вхождения Hello на Hey и затем разделить их на пробелы.

То, что вы сейчас делаете, не может работать, потому что replace требует двух аргументов, и это метод строк, а не списков. Когда вы разбиваете свою строку, вы получаете список.

>>> a = "Hello World!"
>>> a = a.replace("Hello", "Hey")
>>> a
'Hey World!'
>>> a.split(" ")
['Hey', 'World!']
0 голосов
/ 04 сентября 2018
x = "HelloWorldHelloYou!" 
y = x.replace("Hello", "\nHey\n").lstrip("\n").split("\n") 
print(y) # ['Hey', 'World', 'Hey', 'You!']

Это довольно грубый подход, вы можете заменить \n любым символом, которого вы не ожидаете найти в вашей строке (или даже чем-то вроде XXXXX). lstrip должен удалить \n, если ваша строка начинается с Hello.

Кроме того, есть регулярное выражение :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...