所以给定一个列表,例如
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']
您需要将处理后的文本放回列表中;字符串是不可变的,无法就地更改。例如:
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]
这
似乎很愚蠢...我们为什么要为此使用正则表达式?
import string
lines = [word.strip(string.punctuation) for word in line.split()]