Hướng dẫn remove empty line python - loại bỏ python dòng trống

Tôi có chuỗi lớn mà tôi chia theo dòng mới. Làm thế nào tôi có thể loại bỏ tất cả các dòng trống, [chỉ có khoảng trắng]?

Mã giả:

for stuff in largestring:
   remove stuff that is blank

VIFI

9251 Huy hiệu vàng10 Huy hiệu bạc24 Huy hiệu đồng1 gold badge10 silver badges24 bronze badges

Được hỏi ngày 14 tháng 9 năm 2010 lúc 18:35Sep 14, 2010 at 18:35

2

Hãy thử danh sách hiểu và

>>> 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']
8:

>>> 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']

Đã trả lời ngày 14 tháng 9 năm 2010 lúc 18:45Sep 14, 2010 at 18:45

Gimelgimelgimel

80.2k10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng10 gold badges74 silver badges104 bronze badges

1

Sử dụng Regex:

if re.match[r'^\s*$', line]:
    # line is empty [has only the following: \t\n\r and whitespace]

Sử dụng regex +

>>> 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']
9:

filtered = filter[lambda x: not re.match[r'^\s*$', x], original]

Như đã thấy trên Codepad.

Đã trả lời ngày 14 tháng 9 năm 2010 lúc 18:38Sep 14, 2010 at 18:38

NulluserexceptionnulluserexceptionNullUserException

82.1K27 Huy hiệu vàng205 Huy hiệu bạc230 Huy hiệu đồng27 gold badges205 silver badges230 bronze badges

3

Tôi cũng đã thử các giải pháp Regexp và List, và liệt kê một là nhanh hơn.list one is faster.

Đây là giải pháp của tôi [theo câu trả lời trước]:

text = "\n".join[[ll.rstrip[] for ll in original_text.splitlines[] if ll.strip[]]]

Đã trả lời ngày 12 tháng 7 năm 2013 lúc 8:24Jul 12, 2013 at 8:24

RegiszregiszRegisz

4418 Huy hiệu bạc15 Huy hiệu Đồng8 silver badges15 bronze badges

0

lines = bigstring.split['\n']
lines = [line for line in lines if line.strip[]]

Đã trả lời ngày 14 tháng 9 năm 2010 lúc 18:45Sep 14, 2010 at 18:45

Gimelgimelnmichaels

80.2k10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng12 gold badges102 silver badges132 bronze badges

4

Sử dụng Regex:

>>> 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

>>> 

Sử dụng regex +

>>> 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']
9:May 17, 2018 at 18:45

Như đã thấy trên Codepad.mushuweasel

Đã trả lời ngày 14 tháng 9 năm 2010 lúc 18:387 silver badges7 bronze badges

1

Nulluserexceptionnulluserexception

s.replace['\n\n','\n']

82.1K27 Huy hiệu vàng205 Huy hiệu bạc230 Huy hiệu đồng

s.replace['\n\n','\n'].replace['\n\n','\n']

Tôi cũng đã thử các giải pháp Regexp và List, và liệt kê một là nhanh hơn.
• Regular Expressions [Regex] Tutorial
• Python Tutorial: re Module

Đây là giải pháp của tôi [theo câu trả lời trước]:Sep 1, 2015 at 17:54

Đã trả lời ngày 12 tháng 7 năm 2013 lúc 8:24Ooker

Regiszregisz3 gold badges24 silver badges50 bronze badges

4

4418 Huy hiệu bạc15 Huy hiệu Đồng

    for stuff in largestring:
        print[stuff.rstrip["\n"]

NmichaelsnmichaelsApr 11, 2019 at 10:27

48.2K12 Huy hiệu vàng102 Huy hiệu bạc132 Huy hiệu đồng

>>> 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']
0

Đáng ngạc nhiên là một re.sub đa dòng chưa được đề xuất [OH, vì bạn đã chia chuỗi của mình ... nhưng tại sao?]:

Đã trả lời ngày 17 tháng 5 năm 2018 lúc 18:4550 gold badges482 silver badges559 bronze badges

MushuweaselmushuweaselNov 22, 2018 at 13:26

6047 Huy hiệu bạc7 Huy hiệu đồng

>>> 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']
1

Nếu bạn không sẵn sàng thử Regex [mà bạn nên], bạn có thể sử dụng điều này:Sep 10, 2015 at 12:49

Lặp lại điều này nhiều lần để đảm bảo không còn dòng trống. Hoặc chuỗi các lệnh:Radren

Chỉ để khuyến khích bạn sử dụng Regex, đây là hai video giới thiệu mà tôi tìm thấy trực quan: • Hướng dẫn biểu thức chính quy [Regex] • Hướng dẫn Python: RE Mô -đun4 silver badges6 bronze badges

Đã trả lời ngày 1 tháng 9 năm 2015 lúc 17:54

>>> 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']
2

Ookerooker

>>> 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']
3

1.3973 Huy hiệu vàng24 Huy hiệu bạc 50 Huy hiệu Đồng

>>> 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']
4

Bạn có thể chỉ cần sử dụng RSTRIP:Jul 7, 2021 at 10:06

Đã trả lời ngày 11 tháng 4 năm 2019 lúc 10:27Kxrr

Tôi sử dụng giải pháp này để xóa các dòng trống và kết hợp mọi thứ lại với nhau như một dòng:5 silver badges13 bronze badges

1

>>> 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']
5

Output:

>>> 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']
6

Cody Grey ♦

Phù bằng vàng 234K50482 Huy hiệu bạc559 Huy hiệu đồng4 gold badges10 silver badges19 bronze badges

Đã trả lời ngày 22 tháng 11 năm 2018 lúc 13:26Dec 16, 2021 at 5:53

Phiên bản của tôi:

>>> 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']
7

Đã trả lời ngày 10 tháng 9 năm 2015 lúc 12:49May 24, 2017 at 19:07

Reihan_amnReihan_amnReihan_amn

Radrenradren2 gold badges19 silver badges20 bronze badges

Bài Viết Liên Quan

Chủ Đề