Hướng dẫn xóa dòng trong python

Tôi có một chuỗi lớn mà tôi chia theo dòng mới . Làm cách nào tôi có thể xóa tất cả các dòng trống, (chỉ khoảng trắng)?

mã giả:

for stuff in largestring:
   remove stuff that is blank

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 + filter() :

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

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

Hãy thử hiểu danh sách và 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']

Tôi cũng đã thử regrec và liệt kê các giải pháp, và liệt kê một giải pháp nhanh hơn .

Đây là giải pháp của tôi (bằng các câu trả lời trước):

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

Chỉnh sửa: Wow, tôi đoán bỏ qua điều hiển nhiên là không ổn.

lines = bigstring.split()
lines = [line for line in lines if line.strip()]

Nếu bạn không sẵn sàng thử regex (mà bạn nên), bạn có thể sử dụng:

s.replace('\n\n','\n')

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

s.replace('\n\n','\n').replace('\n\n','\n')

Ngạc nhiên là một re.sub đa dòng chưa được đề xuất (Ồ, vì bạn đã tách chuỗi của mình ... Nhưng tại sao?):

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

>>> 

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

while '' in all_lines:
    all_lines.pop(all_lines.index(''))

văn bản gốc của tôi là: Amy Pond đã bị bắt cóc và Bác sĩ đang nuôi một đội quân để giải cứu cô ấy khi bộ phim tiếp tục. Nhưng khi anh và Rory chạy đua khắp các thiên hà, kêu gọi các khoản nợ dài hạn và hứa hẹn long trọng, kẻ thù của anh đang đặt một cái bẫy được che giấu cẩn thận.

Trong phòng giam của cô trong Storm Storm, River Song buồn bã thừa nhận rằng thời gian đã đến cuối cùng - hôm nay sẽ đánh dấu Trận chiến quỷ chạy và giờ tối nhất của Doctor Doctor. Cả hai bên sẽ hy sinh và River Song cuối cùng cũng phải tiết lộ bí mật được bảo vệ chặt chẽ nhất của cô.

tôi đã xóa dòng trống và nối tất cả lại thành một dòng VỚI GIẢI PHÁP NÀY:

match_p = re.sub(r'\s{2}', '', my_txt) # my_txt is text above

Giải pháp đơn giản nhất tôi tìm thấy cho đến nay là -

for stuff in largestring:
    if stuff.strip():
        print(stuff)

Giống như những gì @NullUserException đã nói, đây là cách tôi viết nó:

removedWhitespce = re.sub(r'^\s*$', '', line)

bạn chỉ có thể sử dụng rstrip:

    for stuff in largestring:
        print(stuff.rstrip("\n")

Xin chào các bạn Có khỏe không? Hy vọng tất cả các bạn đều ổn. Hôm nay trong hướng dẫn này, chúng ta sẽ tìm hiểu về Cách xóa dòng mới khỏi chuỗi trong Python. Vì vậy, hãy bắt đầu hướng dẫn này mà không làm mất thời gian của bạn.

  • Cách xóa dòng mới khỏi chuỗi trong Python
  • Phương pháp 1: Sử dụng dải () và rstrip ()
  • Phương pháp 2: Sử dụng hàm Replace ()
  • Bản tóm tắt

  1. Xóa dòng mới khỏi chuỗi bằng Python

    Để loại bỏ dòng mới khỏi chuỗi trong Python Sử dụng dải () và rstrip () hàm dải ():Đây dải () hàm rất hữu ích vì nó loại bỏ cả dòng mới ở cuối và đầu dòng khỏi chuỗi. và nó cũng loại bỏ các khoảng trắng ở cả hai bên của chuỗi. Vì vậy, nó là phương pháp dễ dàng nhất.
    Đầu vào :line1 = “n hello guys.how are you? n” var1 = line1.strip() print(var1) Đầu ra:hello guys.how are you? Hàm rstrip ():Hàm rstrip () này chỉ sử dụng để xóa các ký tự dòng mới ở cuối. Các ký tự dòng mới ở đầu không bị ảnh hưởng bởi chức năng này và nó sẽ vẫn giống như trước. Bạn có thể thấy điều này bằng ví dụ dưới đây:line1 = “n hello guys.how are you n” var1 = line1.rstrip() print(var1)Đầu ra:hello guys.how are you

  2. Xóa dòng mới khỏi chuỗi bằng Python

    Để xóa dòng mới khỏi chuỗi trong Python sử dụng hàm Replace () Hàm Replace () sử dụng để xóa ký tự dòng mới khỏi một chuỗi. Nó thay thế tất cả ký tự then với sự trợ giúp của vòng lặp for trong python.
    Bạn có thể thấy điều này trong ví dụ dưới đây. Đầu vào :list1 = [“npizzan”, “food is nlife”, “burgernn “] var1 = [] for x in list1: var1.append(x.replace(“n”, “”)) print(“New list : ” + str(var1))Đầu ra:New list : [‘pizza’, ‘food is life’, ‘burger ‘]

Phương pháp 1: Sử dụng dải () và rstrip ()

Sử dụng hàm dải () python xóa dòng mới

Đây dải () hàm rất hữu ích vì nó loại bỏ cả dòng mới ở cuối và đầu dòng khỏi chuỗi. và nó cũng loại bỏ các khoảng trắng ở cả hai bên của chuỗi. Vì vậy, nó là phương pháp dễ dàng nhất.

line1 = "n hello guys.how are you? n"
var1 = line1.strip()
print(var1)

Đầu ra:

hello guys.how are you?

Hàm rstrip ():

Hàm rstrip () này chỉ sử dụng để xóa các ký tự dòng mới ở cuối. Các ký tự dòng mới ở đầu không bị ảnh hưởng bởi chức năng này và nó sẽ vẫn giống như trước. Bạn có thể thấy điều này bằng ví dụ dưới đây:

line1 = "n   hello guys.how are you n"
var1 = line1.rstrip()
print(var1)

Đầu ra:

   hello guys.how are you

Phương pháp 2: Sử dụng hàm Replace ()

Sử dụng hàm Replace () để xóa ký tự dòng mới khỏi một chuỗi. Nó thay thế tất cả ký tự then với sự trợ giúp của vòng lặp for trong python. Bạn có thể thấy điều này trong ví dụ dưới đây.

list1 = ["npizzan", "food is nlife", "burgernn "]
var1 = []
for x in list1:
    var1.append(x.replace("n", ""))
print("New list : " + str(var1))

Đầu ra:

New list : ['pizza', 'food is life', 'burger ']

Bản tóm tắt

Đó là tất cả về vấn đề này. Hy vọng tất cả các giải pháp đã giúp bạn rất nhiều. Bình luận bên dưới Suy nghĩ của bạn và thắc mắc của bạn. Ngoài ra, hãy Comment bên dưới giải pháp nào phù hợp với bạn?