我想将字符串替换为空白。对于下面的脚本,它可以工作,但是当我有多个带有不同字符串的字符串替换为空格时,我会卡住。
例如:(我正在使用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)
答案 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']