我需要将“!@#$%^&*()\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/