47
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
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.4K10 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.2K27 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
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.4K10 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.2K27 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
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.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 thông thường [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.4033 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