6 ответов:
inputString.splitlines()даст вам список с каждым пунктом,
splitlines()метод предназначен для разделения каждой строки на элемент списка.
как говорили другие:
inputString.split('\n') # --> ['Line 1', 'Line 2', 'Line 3']это идентично приведенному выше, но функции строкового модуля устарели и их следует избегать:
import string string.split(inputString, '\n') # --> ['Line 1', 'Line 2', 'Line 3']кроме того, если вы хотите,чтобы каждая строка включала последовательность разрыва (CR,LF, CRLF), используйте
splitlinesметод :inputString.splitlines(True) # --> ['Line 1\n', 'Line 2\n', 'Line 3']
лучший способ сделать это -просто использовать
str.splitlines.
splitlines()обрабатывает новые строки правильно, в отличие отsplit("\n").он также имеет преимущество, упомянутое @efotinis, необязательно включая символ новой строки в результат разделения при вызове с
может быть излишним в этом конкретном случае, но другой вариант включает в себя использование
StringIOчтобы создать файлоподобный объектfor line in StringIO.StringIO(inputString): doStuff()
Я хотел бы, чтобы комментарии имели правильное форматирование текста кода, потому что я думаю, что ответ @1_CR нуждается в большем количестве ударов, и я хотел бы увеличить его ответ. Во всяком случае, он привел меня к следующей технике; он будет использовать cStringIO, если таковой имеется (но обратите внимание: cStringIO и StringIO являются не то же самое, потому что вы не можете подкласс cStringIO... он является встроенным... но для основных операций синтаксис будет идентичен, так что вы можете сделать это):
try: import cStringIO StringIO = cStringIO except ImportError: import StringIO for line in StringIO.StringIO(variable_with_multiline_string): pass print line.strip()
исходная запись, запрошенная для кода, который печатает некоторые строки (если они верны для некоторого условия) плюс следующая строка. Моя реализация будет такой:
text = """1 sfasdf asdfasdf 2 sfasdf asdfgadfg 1 asfasdf sdfasdgf """ text = text.splitlines() rows_to_print = {} for line in range(len(text)): if text[line][0] == '1': rows_to_print = rows_to_print | {line, line + 1} rows_to_print = sorted(list(rows_to_print)) for i in rows_to_print: print(text[i])
Comments