python - 在python 3.6中使用replace方法

标签 python replace python-3.6

我需要将“!@#$%^&*()\n{}[]()_-+=<>?\xa0;'/., ”替换为空白。我正在使用替换方法,但似乎它在 python 3.6 上已被弃用。 word_list = []是一个列表,其中包含从网页中提取的所有单词。然后clean_up_list方法将清理符号并用空格替换它们。 我用过for循环遍历符号的长度并将符号替换为空白。我用了 word = word.replace(symbols[i],"") ;有关如何使用替换方法以便替换符号并打印单词时中间没有符号的任何帮助。

错误:

AttributeError: 'list' object has no attribute 'replace'

我的代码:

url = urllib.request.urlopen("https://www.servicenow.com/solutions-by-category.html").read()
word_list = []
soup = bs.BeautifulSoup(url,'lxml')
word_list.append([element.get_text() for element in soup.select('a')])
print(word_list)

def clean_up_list(word_list):
    clean_word_list = []
    for word in word_list:
        symbols = "!@#$%^&*()\n{}[]()_-+=<>?\xa0;'/.,"
        for i in range(0,len(symbols)):

            word  = word.replace(symbols[i],"")
            #print(type(word))

                #print(type(word))
                #word.replace(symbols[i]," ")
        if(len(word) > 0):
            #print(word)
            clean_word_list.append(word)

最佳答案

这里有两个错误:首先,您不是构建字符串列表,而是构建字符串列表的列表。这一行:

word_list.append([element.get_text() for element in soup.select('a')])

应该是:

word_list.<b>extend</b>([element.get_text() for element in soup.select('a')])

此外,您不能直接在列表上调用replace(它不是list对象的方法)。每个条目都需要这个。

接下来,您还需要(正确地)指定,然后必须为 symbols 字符串中的每个字符调用 replace(..) 。这当然是低效的。不过,您可以使用 translate(..) 来实现。

因此,您可以将整个for循环替换为列表理解:

symbols = "!@#$%^&*()\n{}[]()_-+=<>?\xa0;'/.,"
clean_word_list = [word.translate(None,symbols) for word in word_list]

关于python - 在python 3.6中使用replace方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44702348/

相关文章:

python - 在没有访问 pypi 的机器上使用 virtualenv

excel - 如何使用 VBA 删除 Excel 中的零长度字符串?

python - tensorflow 执行时间

python - 如何根据另一个带有坐标的列表覆盖列表位置 - Python 3.6

python - 为什么这两个函数在dis.dis下反汇编后字节码是一样的?

python - 使用 spaCy 标记已标记化的字符串

java - hadoop mapreduce 流中的多个文件输出

python - 接受具有多个参数的函数并返回具有单个元组参数的函数的函数

python - 正则表达式搜索和替换 : How to move characters in a block of text

regex - 获取引号之间的值并将其替换为包含在某些命令中的值