首页 > 解决方案 > 从python中的字符串列表中删除或删除所有特殊字符

问题描述

我有字符串列表,我必须删除所有特殊字符(,-'“。)。

我的代码是

import glob
import re

files = []
for text in glob.glob("*.txt.txt"):
 with open(text) as f:
    fileRead = [ line.lower() for line in f]
 files.append(fileRead)

files1 = []

for item in files :
 files1.append(''.join(item))

我使用了很多选项,包括“replace”、“strip”和“re”。

当我使用条带(如下所示)时,代码运行但在输出中看不到任何变化。

files1 = [line.strip("'") for line in files1]

当我使用 re 时,我得到 TypeError: expected string or bytes-like object。我从列表列表更改为字符串列表,以便我可以使用 re。这种方法被多次陈述,但并没有为我解决问题。

files1 = re.sub(r"[-()\"#/@;:<>{}`+=~|.!?,]", "", files1)

我无法使用替换,因为它会引发属性错误,替换不能用于列表。

请建议我如何摆脱所有特殊字符。

标签: python

解决方案


您应该将 re.sub 函数应用于单个对象,而不是列表。

files_cleaned = [re.sub(r"[-()\"#/@;:<>{}`+=~|.!?,]", "", file) for file in files]

如果您只想接受字母数字字符,您可以这样做:

files_cleaned = [re.sub(r"[^a-zA-Z0-9]", "", file) for file in files]

推荐阅读