1

次のようなリストがあるとしましょう。

lst = ["Line1\r\nLine2\r\n", "Line3\r\nLine4\r\n", etc.]

行末で要素を分割し、それらを個別の要素にする素晴らしいpythonicの方法はありますか?

new_lst = ["Line1\r\n", "Line2\r\n", "Line3\r\n", "Line4\r\n"]

リストをループし、要素を分割して新しいリストに保存するためのコードを数行追加できることはわかっていますが、私はPythonに比較的慣れていないため、すべてを利用する習慣を身に付けたいと考えていますリスト内包表記などの優れた機能。前もって感謝します!

4

4 に答える 4

10
>>> lst = ["Line1\r\nLine2\r\n", "Line3\r\nLine4\r\n"]
>>> new_lst = [elem for l in lst for elem in l.splitlines(True)]
>>> new_lst
['Line1\r\n', 'Line2\r\n', 'Line3\r\n', 'Line4\r\n']
于 2012-05-25T13:35:25.107 に答える
6
import itertools as it
list(it.chain(*(elem.splitlines(True) for elem in lst)))

また

[line for elem in lst for line in elem.splitlines(True)]

どちらも戻ります:['Line1\r\n', 'Line2\r\n', 'Line3\r\n', 'Line4\r\n']

ドキュメントから:

S.splitlines([keepends]) -> list of strings

Return a list of the lines in S, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends
is given and true.

これはおよび と\r\n同様に機能します。\r\n

于 2012-05-25T13:33:50.620 に答える
0
new_lst = [x + '\r\n' for x in ''.join(lst).split('\r\n')][:-1]
于 2012-05-25T13:34:19.513 に答える
0

完全を期すために、この醜いソリューションを追加しましょう ;)

new_lst = ('\r\n'.join(lst)).splitlines(True)
于 2012-05-25T14:15:35.687 に答える