Как разделить многострочную строку на несколько строк?



у меня есть многострочный строковый литерал, который я хочу сделать операцию в каждой строке, вот так:



inputString = """Line 1
Line 2
Line 3"""


Я хочу сделать что-то вроде следующего:



for line in inputString:
doStuff()
509   6  

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

    Ничего не найдено.