これはよくある質問ですが、該当する回答が見つかりませんでした。私は以前の関数でHTMLページをスクラップした単語のリストから句読点を削除しようとしています。ここで私が持っているものです。Pythonのリストから句読点を削除する
import re
def strip_text():
list_words = get_text().split()
print(list_words)
for i in range(len(list_words)):
list_words = re.sub("[^a-zA-Z]"," ",list_words)
list_words = list_words.lower()
return list_words
print(get_text())
print(strip_text())
私はre.subビットが列ではなく、リストに使用されることを想定しているので、これは動作しないことを実現します。これを行うには同様に効率的な方法がありますか?私は単語のリストを再び文字列にする必要がありますか?
編集:この問題は、私が言ったようにHTMLページからテキストを削っていることです。
from bs4 import BeautifulSoup
import requests
from collections import Counter
import re
tokens = []
types= Counter(tokens)
#str_book = ""
str_lines = ""
import string
def get_text():
# str_lines = ""
url = 'http://www.gutenberg.org/files/1155/1155-h/1155-h.htm'
r = requests.get(url)
data = r.text
soup = BeautifulSoup(data, 'html.parser')
text = soup.find_all('p') #finds all of the text between <p>
i=0
for p in text:
i+=1
line = p.get_text()
if (i<10):
continue
print(line)
return line
だから、単語のリストは、私が使用しているアガサ・クリスティブック内のすべての単語のリストを次のようになります。私は上記の持っているものの前のコードは次のようになります。うまくいけば助けてくれます。
これはあなたの質問に直接答えませんが、私はBeautiful Soupパッケージがウェブスクレイピングに関連する多くの活動を処理していることを指摘したかったので、今自分の関数を書いているならば、 – HFBrowning
を調べる価値があります。ええ、私は私のget_text関数でBeautifulSoupを使用しています!間違いなくその部分をトンに簡単にします。 – Alanan
'インポート文字列; list_words = [s_ranslate(None、string.punctuation)for list_words] '、[this](http:// stackoverflow。com/a/266162/6779606)回答。 – PyNoob