各要素内に異なる段落を含むリストを作成しました。
各段落の最初の単語を見つけたい。
私が思いつくことができる唯一のことは、各段落を個々の単語に分割して見つけることelement[0]
です。リストにすでに各段落があるため、これはかなり過剰に思えます
では、これを行うためのより良い方法は何ですか?
このようなもの?
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
を順に処理します。やれやれだぜ:
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 を返します)。 -項目リスト、実行段落全体)。
各段落が単語で始まると仮定します(スペースや数字ではありません)。
[par[:par.index(" ")] for par in list_of_par]
これがいわゆる「リスト内包」です。の各項目を調べてlist_of_par
適用par[:par.index(" ")]
します。これは、段落()のスライスを取りますpar
。この場合、0番目の文字から最初のスペース([:par.index(" ")]
)まで(ただし、これは含まれません)です。
リスト内包表記は文字列のリストを返します。各文字列は、最初のスペースまでの段落内のすべての文字です。
言葉をどのようにレイアウトしたいですか?それらが空白ではないこと、または句読点が含まれていないことを保証したくないですか?
最初のカット:
first_words = [
paragraph.split(None, 1)[0]
for paragraph in paragraphs
]