У меня есть большая строка, которую я разделил на строки новой строки. Как удалить все строки, которые пусты, (только пробелы)?
псевдокод:
for stuff in largestring:
remove stuff that is blank
У меня есть большая строка, которую я разделил на строки новой строки. Как удалить все строки, которые пусты, (только пробелы)?
псевдокод:
for stuff in largestring:
remove stuff that is blank
Использование регулярного выражения:
if re.match(r'^\s*$', line):
# line is empty (has only the following: \t\n\r and whitespace)
Использование regex + filter()
:
filtered = filter(lambda x: not re.match(r'^\s*$', x), original)
Как видно на codepad.
Попробуйте найти список и string.strip()
:
>>> mystr = "L1\nL2\n\nL3\nL4\n \n\nL5"
>>> mystr.split('\n')
['L1', 'L2', '', 'L3', 'L4', ' ', '', 'L5']
>>> [line for line in mystr.split('\n') if line.strip() != '']
['L1', 'L2', 'L3', 'L4', 'L5']
Я также пробовал regexp и список решений, а список один быстрее.
Вот мое решение (по предыдущим ответам):
text = "\n".join([ll.rstrip() for ll in original_text.splitlines() if ll.strip()])
Изменить: Ничего себе, я думаю, что опустить очевидное не все.
lines = bigstring.split()
lines = [line for line in lines if line.strip()]
Если вы не хотите использовать регулярные выражения (что следует), вы можете использовать это:
s.replace('\n\n','\n')
Повторите это несколько раз, чтобы убедиться, что не осталось пустой строки. Или цепочки команд:
s.replace('\n\n','\n').replace('\n\n','\n')
Просто чтобы побудить вас использовать регулярные выражения, вот два вводных видео, которые я считаю интуитивно понятными:
• Учебник по регулярным выражениям (Regex)
• Python Tutorial: re Module
Моя версия:
while '' in all_lines:
all_lines.pop(all_lines.index(''))
Удивило, что многострочный re.sub не был предложен (О, потому что вы уже разбили свою строку... Но почему?):
>>> import re
>>> a = "Foo\n \nBar\nBaz\n\n Garply\n \n"
>>> print a
Foo
Bar
Baz
Garply
>>> print(re.sub(r'\n\s*\n','\n',a,re.MULTILINE))
Foo
Bar
Baz
Garply
>>>
мой оригинальный текст: Эми Понд была похищена, и Доктор собирает армию, чтобы спасти ее, поскольку драма продолжается. Но когда он и Рори мчатся по галактикам, зовут долгов и держат торжественные обещания, его враги ставят тщательно скрытые ловушки.
В своей камере в клетке Шторма Ривер Сонг с грустью признает, что время наконец настало - сегодня состоится битва демонов и самый темный час Доктора. Обе стороны принесут свои жертвы, и Ривер Сонг наконец-то раскроет свой самый охраняемый секрет.
Я удалил пустую строку и объединил все вместе в одну строку ЭТОМ РЕШЕНИЕМ:
match_p = re.sub(r'\s{2}', '', my_txt) # my_txt is text above
редактирование komodo удалить пустые строки
В редактировании komodo нажмите Ctrl + H Star Mark (Обработать как регулярное выражение), Нажмите ссылку выше, чтобы просмотреть снимок.
То же, что и @NullUserException, так я пишу:
removedWhitespce = re.sub(r'^\s*$', '', line)
Вы можете просто использовать rstrip:
for stuff in largestring:
print(stuff.rstrip("\n")
Самое простое решение, которое я нашел на данный момент, -
for stuff in largestring:
if stuff.strip():
print(stuff)
while True:
try:
all_lines.remove('')
except ValueError:
break