我想在单个替换功能中用空格替换多个字符串

时间:2019-04-07 04:24:45

标签: python scrapy

我想将字符串替换为空白。对于下面的脚本,它可以工作,但是当我有多个带有不同字符串的字符串替换为空格时,我会卡住。

例如:(我正在使用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'替换为空白,第三次我想将“ mobile”替换为空白,最多20个以上的差异字符串将被替换为空白功能) (我不知道是否可能!,有人对此有想法请帮忙。) (谢谢!)

尝试过=>

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

3 个答案:

答案 0 :(得分:2)

您应使用正则表达式,该正则表达式将与您要替换的所有术语匹配:

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']

答案 1 :(得分:0)

您还可以通过迭代字符串来替换来做到这一点:

innodb_log_file_size = 512M

请注意,由于可能会发生多次替换,因此您需要将替换分配回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)

答案 2 :(得分:0)

无需使用其他列表,就可以使用正则表达式替换列表中每个元素中不必要的字符串。

正则表达式如下:

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']