我想看看是否可以在不使用*x
的情况下从这些元素中删除rstrip
。我尝试了以下方法:
import re
import time
list = ["3*x", "2", "4*x", "1", "3*x", "0"]
new_list = []
for terms in list:
new_list.extend(re.sub(r'$(\*x)','', terms))
print new_list
time.sleep(4)
这在逻辑上是有道理的,因为具有*x
的每个元素都将以它结尾,因此我使用了$
。然而我输出如下:
['3', '*', 'x', '2', '4', '*', 'x', '1', '3', '*', 'x', '0']
但是,如果我只是从上面的代码中删除$
,那么我得到正确的输出:
['3', '2', '4', '1', '3', '0']
那么为什么初始代码会给出这样的错误输出? 我完全是正则表达式的新手,所以尽量做到相当基础。
答案 0 :(得分:1)
$
表示字符串的结尾。您希望匹配字符串末尾的*x
,因此您需要编写\*x$
。
此外,由于字符串是可迭代的,l.extend('asd')
基本上会l.append('a'); l.append('s'); l.append('d')
。您可能希望使用append
,而不是extend
。