Я хочу заменить несколько строк пробелами в одной функции замены

Я хочу заменить строку пробелом. Для приведенного ниже сценария это работает, но когда у меня есть несколько строк с разными строками, чтобы заменить их пробелами, я застреваю.

например: (Я получаю список строк, используя xpath etxtract, для этого предположим, что 8 строк одинаковы, 3 строки одинаковы, 2 строки одинаковы, ......)

links = [ 'ABCDEFGH google', 'ABCDEFGH google', 'Samsung mobile',  
'ABCDEFGH serachgoogle google', 'ABCDEFGH google',  'XYZacbxf 
12153131' , 'Samsung mobile', 'Apple smartphone x10',.............]

m = []
for link in links:
    temp = link.replace("ABCD", '')
    m.append(temp)

(В приведенном выше примере сначала я заменяю «ABCD» пробелом, а во-вторых, я хочу заменить «ABCD» пробелом, в-третьих, я хочу заменить «мобильный» пробелом, до 20+ разностных строк пробелами в одной функции замены) (Я не знаю, возможно это или нет! Кто-нибудь знает об этом, пожалуйста, помогите.) (Заранее спасибо!)

Пробовали =>

m = []
for link in links:
    temp = link.replace("ABCD", '' or "mobile", '' or "google", 
'' or ...........upto available replacing string) 
    m.append(temp)

Каким должен быть ваш окончательный результат?

Dharanidhar Reddy 07.04.2019 06:30

вывод будет строкой без замены строк...

evil007 07.04.2019 06:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
140
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете сделать это таким образом, также перебирая строки для замены:

to_replace_terms = ['ABCD', 'mobile', 'google']
m = []
for link in links:
    for to_replace_term in to_replace_terms:
        link = link.replace(to_replace_term, '')
    m.append(link)

Обратите внимание, что вам нужно назначить замену обратно link, поскольку может произойти несколько замен.

Ответ принят как подходящий

Вы должны использовать регулярное выражение, которое будет соответствовать всем терминам, которые вы хотите заменить:

import re

links = ['ABCDEFGH google', 'ABCDEFGH google', 'Samsung mobile',  
'ABCDEFGH serachgoogle google', 'ABCDEFGH google',  'XYZacbxf',
'12153131' , 'Samsung mobile', 'Apple smartphone x10']

to_replace = ['ABCD', 'mobile', 'google']
regex = re.compile('|'.join(to_replace))

new_links = [re.sub(regex, '', link) for link in links]
print(new_links)

Выход:

['EFGH ', 'EFGH ', 'Samsung ', 'EFGH serach ', 'EFGH ', 'XYZacbxf', '12153131', 'Samsung ', 'Apple smartphone x10']

Не используя дополнительный список, вы можете использовать регулярное выражение для замены ненужных строк из каждого элемента списка.

Регулярное выражение выглядит так:

re.sub(r'ABCD|mobile', '', x)

Код:

import re

links = [ 'ABCDEFGH google', 'ABCDEFGH google', 'Samsung mobile',  'ABCDEFGH serachgoogle google', 'ABCDEFGH google',  'XYZacbxf 12153131' , 'Samsung mobile', 'Apple smartphone x10']

res = []
for x in links:
    res.append(re.sub(r'ABCD|mobile', '', x))

print(res)
# ['EFGH google', 'EFGH google', 'Samsung ', 'EFGH serachgoogle google', 'EFGH google', 'XYZacbxf 12153131', 'Samsung ', 'Apple smartphone x10']

Другие вопросы по теме