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
9351 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.6K10 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.3K27 Huy hiệu vàng206 Huy hiệu bạc231 Huy hiệu Đồng27 gold badges206 silver badges231 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
4518 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.6K10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng12 gold badges102 silver badges133 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.3K27 Huy hiệu vàng206 Huy hiệu bạc231 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 badges25 silver badges50 bronze badges
4
4518 Huy hiệu bạc15 Huy hiệu Đồng
for stuff in largestring:
print[stuff.rstrip["\n"]
NmichaelsnmichaelsApr 11, 2019 at 10:27
48.3K12 Huy hiệu vàng102 Huy hiệu bạc133 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 badges561 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']
1Nế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']
2Ookerooker
>>> 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']
31.4493 huy hiệu vàng25 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']
4Bạ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']
5Output:
>>> 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 ♦
Phim thương hiệu vàng 234K50482 Huy hiệu bạc561 Huy hiệu đồng5 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