所以给出一个列表,例如
lines = ['This', 'is', 'a', 'sentence.']
我需要删除单词开头和结尾的所有标点符号。在这种情况下,'。'来自'句子。'。
这就是我现在正在使用的内容:
lines = line.strip().split()
for l in lines:
l = re.sub(r'^[^A-Za-z0-9]*|[^A-Za-z0-9]*$','', l)
words.append(lines)
我知道正则表达式正在工作(通过在循环中使用print(l)
来检查它),但是当我打印出行(即在循环之外)时,标点符号仍然存在!我的代码出了什么问题。
这应该附加到单词:
lines = ['This', 'is', 'a', 'sentence']
答案 0 :(得分:2)
您需要将处理后的文本放回列表中;字符串是不可变的,它们不能就地更改。例如:
for i, l in enumerate(lines):
lines[i] = re.sub(r'^[^A-Za-z0-9]*|[^A-Za-z0-9]*$','', l)
或列表理解版本:
lines = [re.sub(r'^[^A-Za-z0-9]*|[^A-Za-z0-9]*$','', l) for l in lines]
答案 1 :(得分:1)
这看起来很愚蠢......为什么我们使用正则表达式?
import string
lines = [word.strip(string.punctuation) for word in line.split()]