Я хочу заменить несколько строк пробелами в одной функции замены - PullRequest
0 голосов
/ 07 апреля 2019

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

например: (Я получаю список строк, используя 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)

Ответы [ 3 ]

2 голосов
/ 07 апреля 2019

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

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']
0 голосов
/ 07 апреля 2019

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

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

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']
0 голосов
/ 07 апреля 2019

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

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, так как может произойти несколько замен.

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