1

これは私が持っているコードですが、段落全体を出力します。最初のドットまで、最初の文のみを印刷する方法は?

from bs4 import BeautifulSoup
import urllib.request,time

article = 'https://www.theguardian.com/science/2012/\
oct/03/philosophy-artificial-intelligence'

req = urllib.request.Request(article, headers={'User-agent': 'Mozilla/5.0'})
html = urllib.request.urlopen(req).read()

soup = BeautifulSoup(html,'lxml')

def print_intro():
    if len(soup.find_all('p')[0].get_text()) > 100:
        print(soup.find_all('p')[0].get_text())

このコードは次を出力します。

人間の脳が、宇宙で知られている他のすべての物体よりもいくつかの点ではるかに優れた能力を持っていると述べても、議論の余地はありません。脳は宇宙が存在すること、素数が無数に存在する理由、リンゴは時空の湾曲によって落ちること、生まれつきの本能に従うことが道徳的に正しいことを理解できる唯一の物体です。間違っているか、それ自体が存在します。また、そのユニークな能力は、そのような脳の問題に限定されていません。冷たい、物理的な事実は、宇宙に飛び出し、害を及ぼすことなく戻ったり、隕石の衝突を予測して防止したり、絶対零度よりも 10 億分の 1 度高い温度まで物体を冷却したり、検出したりすることができる唯一の種類の物体であるということです。銀河の距離を越えたその種の他のもの。

しかし、私はそれを印刷したいだけです:

人間の脳が、宇宙で知られている他のすべての物体よりもいくつかの点ではるかに優れた能力を持っていると述べても、議論の余地はありません。

手伝ってくれてありがとう

4

4 に答える 4

0

split最初の段落period。引数1MAXSPLIT、不必要な余分な分割からあなたの時間を節約します。

def print_intro():
    if len(soup.find_all('p')[0].get_text()) > 100:
        my_paragraph = soup.find_all('p')[0].get_text()
        my_list = my_paragraph.split('.', 1)
        print(my_list[0])
于 2016-02-09T13:12:32.843 に答える
0
def print_intro():
    if len(soup.find_all('p')[0].get_text()) > 100:
        paragraph = soup.find_all('p')[0].get_text()
        phrase_list = paragraph.split('.')
        print(phrase_list[0])
于 2016-02-09T13:06:45.047 に答える
-1

を使用できfind('.')ます。探しているものが最初に出現したインデックスを返します。

したがって、段落が変数に格納されている場合paragraph

sentence_index = paragraph.find('.')
# add the '.'
sentence += 1
print(paragraph[0: sentence_index])

明らかに、paragraph変数に含まれる文字列に '.' があるかどうかを確認するような制御部分がありません。など. とにかく、探している部分文字列が見つからない場合、find() は -1 を返します。

于 2016-02-09T13:13:43.283 に答える