更改列表中的元素



所以给定一个列表,例如

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()]

相关内容

  • 没有找到相关文章

最新更新