![](/img/trans.png)
[英]Is there any way to check if there are negative elements on the list and if so remove them?
[英]Is there a way to check if any of list elements are in a string and replace them?
这是我尝试过的代码,但它在两种情况下都返回 output
alist = ['bla', 'blblblbl', 'asasa', 'blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
for i in alist:
if i in astring:
newstring = astring.replace(i, 'True')
print(newstring)
Output:
True lalala lvlvl lblblbl asasa
bla lalala lvlvl lblblbl True
虽然我需要:
True lalala lvlvl lblblbl True
我建议只拆分astring
,使用列表理解进行替换,然后将其加入:
print(' '.join(['True' if i in alist else i for i in astring.split()]))
产生:
True lalala lvlvl lblblbl True
稍微分解一下:
print(' '.join([
'True' if i in alist else i
for i in astring.split()
]))
astring.split()
== ['bla', 'lalala', 'lvlvl', 'lblblbl', 'asasa']
'True' if i in alist else i
将i
替换为'True'
如果i
在alist
中['True' if i in alist else i for i in astring.split()]
== ['True', 'lalala', 'lvlvl', 'lblblbl', 'True']
' '.join(['True', 'lalala', 'lvlvl', 'lblblbl', 'True']
将列表转换为单个字符串,并以' '
连接列表元素。 str.replace通过用新的替换旧的来返回字符串的新副本并且您没有保存它,因此只需始终保存新副本并执行下一个replace
操作
返回字符串的副本,其中所有出现的 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ 旧替换为新
alist = ['bla', 'blblblbl', 'asasa', 'blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
for i in alist:
if i in astring:
astring = astring.replace(i,'True') # True lalala lvlvl lblblbl True
print(astring)
您可以使用 re.sub 轻松解决此问题
alist = ['bla', 'blblblbl', 'asasa', 'blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
print(re.sub("|".join(sorted(alist,key=len,reverse=True)),"True",astring))
您可以使用范围 function 进行迭代并使用该索引替换拆分列表中的单词
def replace(string_data,map_list):
splited_string = string_data.split()
for word in range(len(splited_string)):
if splited_string[word] in map_list:
splited_string[word] = 'True'
return " ".join(splited_string)
Output:
'True lalala lvlvl lblblbl True'
你可以用 try 和 except 来 go。
alist = ['bla', 'blblblbl', 'asasa', 'blblblblblb']
astring = 'bla lalala lvlvl lblblbl asasa'
for i in alist:
try:
astring = astring.replace(i, 'True')
except:
pass
print(astring)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.