我需要用空格替换“!@#$%^&*()\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)
答案 0 :(得分:1)
这里有两个错误:首先你不构造一个字符串列表,但是一个字符串列表列表。这一行:
word_list.append([element.get_text() for element in soup.select('a')])
应该是:
word_list.extend([element.get_text() for element in soup.select('a')])
此外,您无法直接在列表中调用replace
(它不是list
对象的方法)。每个条目都需要这个。
接下来,您还指定(正确),然后必须为replace(..)
字符串中的每个字符调用symbols
。这当然效率低下。但是,您可以使用translate(..)
。
所以你可以用列表理解 替换整个for
循环:
symbols = "!@#$%^&*()\n{}[]()_-+=<>?\xa0;'/.,"
clean_word_list = [word.translate(None,symbols) for word in word_list]
答案 1 :(得分:0)
尝试明确地将单词转换为字符串,因为您接收的错误代码提到对象是一个&#39;列表&#39;不是字符串,并且无法在列表上调用replace方法。例如(注意倒数第二行):
def clean_up_list(word_list):
clean_word_list = []
for word in word_list:
word = str(word)
symbols = "!@#$%^&*()\n{}[]()_-+=<>?\xa0;'/.,"