2

各要素内に異なる段落を含むリストを作成しました。

各段落の最初の単語を見つけたい。

私が思いつくことができる唯一のことは、各段落を個々の単語に分割して見つけることelement[0]です。リストにすでに各段落があるため、これはかなり過剰に思えます

では、これを行うためのより良い方法は何ですか?

4

4 に答える 4

3

このようなもの?

l = ['start of paragraph 1','start of paragraph 2','para 3']
first_words = [p.split()[0] for p in l]
print first_words

プリント: ['start', 'start', 'para']

各段落を分割したくない場合は、最初のスペースのインデックスを検索し、それまでの各単語を取得できます。

l = ['start of paragraph 1','start of paragraph 2','para 3']
first_words = [p[:p.find(' ')] for p in l]
print first_words

プリント: ['start', 'start', 'para']

要求された説明:

  • p.find(' ') で段落内の最初のスペースを見つける - 位置を返す
  • 次に、 p[:p.find(' ')] を介して段落の最初の文字を取得します
  • その行の残りの部分はリスト内包表記と呼ばれ、基本的にリストをループして各段落pを順に処理します。
于 2012-06-06T00:52:44.480 に答える
1

やれやれだぜ:

my_paras = ["It was the best of times", "Twas a dark and stormy night", "The walrus and the carpenter"]

my_first_words = [para.split(None, 1)[0] for para in my_paras]

戻り値

['It', 'Twas', 'The']

分割するNoneパラメーターは「連続する空白で分割する」ことを意味し、通常は暗黙的ですが、2 番目の位置パラメーターmaxsplit. maxsplit=1 を渡すと、.split() は、最初の空白文字を検出した後 (最初の単語と段落の残りの部分で構成される 2 項目のリストを返す)、または文字列の最後に到達すると停止します (1 を返します)。 -項目リスト、実行段落全体)。

于 2012-06-06T01:21:09.193 に答える
0

各段落が単語で始まると仮定します(スペースや数字ではありません)。

[par[:par.index(" ")] for par in list_of_par]

これがいわゆる「リスト内包」です。の各項目を調べてlist_of_par適用par[:par.index(" ")]します。これは、段落()のスライスを取りますpar。この場合、0番目の文字から最初のスペース([:par.index(" ")])まで(ただし、これは含まれません)です。

リスト内包表記は文字列のリストを返します。各文字列は、最初のスペースまでの段落内のすべての文字です。

于 2012-06-06T01:03:10.323 に答える
0

言葉をどのようにレイアウトしたいですか?それらが空白ではないこと、または句読点が含まれていないことを保証したくないですか?

最初のカット:

first_words = [
        paragraph.split(None, 1)[0]
        for paragraph in paragraphs
]
于 2012-06-06T01:15:16.670 に答える