Hướng dẫn python remove lines from file starting with - python xóa các dòng khỏi tệp bắt đầu bằng

Đây có vẻ như là một câu hỏi thẳng thắn nhưng tôi dường như không thể xác định được vấn đề của mình. Tôi đang cố gắng xóa tất cả các dòng trong một tệp bắt đầu bằng Octothorpe (#) ngoại trừ dòng đầu tiên. Đây là vòng lặp tôi đang làm việc với:

for i, line in enumerate(input_file):
    if i > 1:
        if not line.startswith('#'):
            output.write(line)

Mã trên dường như không hoạt động. Có ai biết vấn đề của tôi là gì không? Cảm ơn!

Hỏi ngày 8 tháng 8 năm 2011 lúc 17:07Aug 8, 2011 at 17:07

Hướng dẫn python remove lines from file starting with - python xóa các dòng khỏi tệp bắt đầu bằng

6

Bạn không viết ra dòng đầu tiên:

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)

Hãy nhớ rằng

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
1 (giống như hầu hết mọi thứ) bắt đầu ở mức 0.

Chính xác hơn một chút (và không lặp lại dòng đầu ra):

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)

Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:09Aug 8, 2011 at 17:09

Ned Batchelderned BatchelderNed Batchelder

353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng71 gold badges553 silver badges650 bronze badges

1

Tôi sẽ không bận tâm với việc liệt kê ở đây. Bạn chỉ cần nó quyết định dòng nào là dòng đầu tiên và cái nào không. Điều này sẽ đủ dễ dàng để xử lý bằng cách viết dòng đầu tiên ra và sau đó sử dụng một vòng lặp để viết các dòng bổ sung không bắt đầu bằng '#'.

def removeComments(inputFileName, outputFileName):

    input = open(inputFileName, "r")
    output = open(outputFileName, "w")

    output.write(input.readline())

    for line in input:
        if not line.lstrip().startswith("#"):
            output.write(line)

    input.close()
    output.close()

Cảm ơn TwoPoint718 vì đã chỉ ra lợi thế của việc sử dụng Lstrip.

Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:29Aug 8, 2011 at 17:29

DunesdunesDunes

Phim huy hiệu vàng 35,9k77 gold badges78 silver badges93 bronze badges

Có thể bạn muốn bỏ qua các dòng từ đầu ra trong đó ký tự không phải là màu đầu tiên là Octothorpe:

for i, line in enumerate(input_file):
    if i == 0 or not line.lstrip().startswith('#'):
        output.write(line)

(Lưu ý cuộc gọi đến

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
2)

Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:17Aug 8, 2011 at 17:17

ChrischrisChris

2.86026 Huy hiệu bạc42 Huy hiệu đồng26 silver badges42 bronze badges

3

Bài viết này cho bạn biết cách xóa các dòng cụ thể khỏi một tệp trong Python. Ví dụ: bạn muốn xóa các dòng #5 và #12.

Sau khi đọc bài viết này, bạn sẽ học::

  • Cách xóa các dòng cụ thể khỏi tệp theo số dòng
  • Cách xóa các dòng khớp hoặc chứa văn bản/chuỗi đã cho
  • Cách xóa dòng đầu tiên và cuối cùng khỏi tệp văn bản.

Xóa các dòng khỏi một tệp theo số dòng

Vui lòng làm theo các bước dưới đây để xóa các dòng cụ thể khỏi tệp văn bản theo số dòng: -

  1. Mở tệp ở chế độ đọc
  2. Đọc một tập tin. Đọc tất cả nội dung từ một tệp vào danh sách bằng phương thức
    for i, line in enumerate(input_file):
        if i == 0 or not line.startswith('#'):
            output.write(line)
    
    3. Ở đây mỗi phần tử của danh sách là một dòng từ tệp
  3. Đóng một tập tin
  4. Một lần nữa, mở cùng một tệp trong chế độ ghi.
  5. Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm
    for i, line in enumerate(input_file):
        if i == 0 or not line.startswith('#'):
            output.write(line)
    
    4 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòng
  6. Sử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.
  7. Đóng một tập tin

Example::

Một lần nữa, mở cùng một tệp trong chế độ ghi.how to delete lines from a text file by line number in Python. See the attached file used in the example and an image to show the file’s content for reference.

Hướng dẫn python remove lines from file starting with - python xóa các dòng khỏi tệp bắt đầu bằng
Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm
for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
4 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòng

Sử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.deleting lines 5 and 8.

# list to store file lines
lines = []
# read file
with open(r"E:\demos\files\sample.txt", 'r') as fp:
    # read an store all lines into list
    lines = fp.readlines()

# Write file
with open(r"E:\demos\files\sample.txt", 'w') as fp:
    # iterate each line
    for number, line in enumerate(lines):
        # delete line 5 and 8. or pass any Nth line you want to remove
        # note list index starts from 0
        if number not in [4, 7]:
            fp.write(line)

Mã sau đây hiển thị & nbsp; cách xóa các dòng khỏi tệp văn bản theo số dòng & nbsp; trong python. Xem tệp đính kèm được sử dụng trong ví dụ và hình ảnh để hiển thị nội dung tệp để tham khảo.

First line
Second line
Third line
Fourth line
Sixth line
Seventh line

Note::

Tệp văn bản

Trong ví dụ này, chúng tôi là & nbsp; xóa các dòng 5 và 8.: Don’t use

def removeComments(inputFileName, outputFileName):

    input = open(inputFileName, "r")
    output = open(outputFileName, "w")

    output.write(input.readline())

    for line in input:
        if not line.lstrip().startswith("#"):
            output.write(line)

    input.close()
    output.close()
0 keywords to delete lines from a list and write the same list to file. Because when you delete a line from the list, the item’s index gets changed. So you will no longer be able to delete the correct line.

Mã của chúng tôi đã xóa hai dòng. Đây là dữ liệu hiện tại của một tệp

Hàm

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
4 thêm một bộ đếm vào một điều khác biệt (chẳng hạn như danh sách, chuỗi) và trả về nó trong đối tượng
for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
1. Chúng tôi đã sử dụng đối tượng
for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
1 với vòng lặp
for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
8 để truy cập số dòng.
for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
4 không tải toàn bộ danh sách trong bộ nhớ, vì vậy đây là một giải pháp hiệu quả. don’t need to open a file twice.

  • Lưu ý: Don Tiết sử dụng từ khóa
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    0 để xóa các dòng khỏi danh sách và viết cùng một danh sách vào tệp. Bởi vì khi bạn xóa một dòng khỏi danh sách, chỉ mục của mục sẽ được thay đổi. Vì vậy, bạn sẽ không còn có thể xóa đúng dòng.read and write mode (
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    1)
  • Sử dụng phương thức Seek ()
  • Điều tương tự có thể được thực hiện bằng phương thức Seek () bằng cách thay đổi vị trí con trỏ để chúng tôi không cần phải mở một tệp hai lần.pointer to the start of a file using
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    2 method
  • Mở tệp trong chế độ đọc và ghi (
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    1)
  • Đọc tất cả các dòng từ một tệp vào danh sách
  • Di chuyển con trỏ tệp đến đầu tệp bằng phương thức
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    2

Example::

with open(r"E:\demos\files\sample.txt", 'r+') as fp:
    # read an store all lines into list
    lines = fp.readlines()
    # move file pointer to the beginning of a file
    fp.seek(0)
    # truncate the file
    fp.truncate()

    # start writing lines
    # iterate line and line number
    for number, line in enumerate(lines):
        # delete line number 5 and 8
        # note: list index start from 0
        if number not in [4, 7]:
            fp.write(line)

Cắt ngắn tệp bằng phương pháp def removeComments(inputFileName, outputFileName): input = open(inputFileName, "r") output = open(outputFileName, "w") output.write(input.readline()) for line in input: if not line.lstrip().startswith("#"): output.write(line) input.close() output.close() 3

Lặp lại danh sách sử dụng chức năng Loop và

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
4

Trong mỗi lần lặp viết dòng hiện tại vào tệp. Bỏ qua những số dòng mà bạn muốn xóa.

  • Xóa dòng đầu tiên và cuối cùng của một tệp
  • Để xóa một cách chọn lọc một số nội dung nhất định khỏi tệp, chúng tôi cần sao chép nội dung của tệp ngoại trừ các dòng chúng tôi muốn xóa và viết lại các dòng còn lại vào cùng một tệp.
  • Sử dụng các bước dưới đây để xóa dòng đầu tiên khỏi một tệp.
  • Mở tệp ở chế độ đọc và ghi (
    def removeComments(inputFileName, outputFileName):
    
        input = open(inputFileName, "r")
        output = open(outputFileName, "w")
    
        output.write(input.readline())
    
        for line in input:
            if not line.lstrip().startswith("#"):
                output.write(line)
    
        input.close()
        output.close()
    
    1)
  • Đọc tất cả các dòng từ một tệp
with open(r"E:\demos\files\sample.txt", 'r+') as fp:
    # read an store all lines into list
    lines = fp.readlines()
    # move file pointer to the beginning of a file
    fp.seek(0)
    # truncate the file
    fp.truncate()

    # start writing lines except the first line
    # lines[1:] from line 2 to last line
    fp.writelines(lines[1:])

Di chuyển con trỏ tệp khi bắt đầu tệp bằng phương thức

def removeComments(inputFileName, outputFileName):

    input = open(inputFileName, "r")
    output = open(outputFileName, "w")

    output.write(input.readline())

    for line in input:
        if not line.lstrip().startswith("#"):
            output.write(line)

    input.close()
    output.close()
2

Cắt ngắn tệp

First line
Second line
Third line
Fourth line
Sixth line
Seventh line

Viết tất cả các dòng từ một tệp ngoại trừ dòng đầu tiên.

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
0

Đầu ra.

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
1

Trước khi xóa dòng đầu tiên

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
2

Sử dụng ví dụ dưới đây để các bước để xóa dòng cuối cùng khỏi tệp

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
3

Để xóa n dòng cuối cùng, sử dụng danh sách cắt..

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
4

Xóa các dòng khớp với văn bản (chuỗi)

Giả sử các tệp chứa hàng trăm dòng và bạn muốn xóa các dòng khớp với chuỗi/văn bản đã cho. Hãy cùng xem cách xóa các dòng khớp với văn bản đã cho (khớp chính xác).

Steps::

  • Đọc tệp vào một danh sách
  • Mở cùng một tệp trong chế độ ghi
  • Lặp lại một danh sách và ghi từng dòng vào một tệp ngoại trừ các dòng khớp với chuỗi đã cho.

Ví dụ 1: Xóa các dòng khớp với văn bản đã cho (khớp chính xác): Delete lines that match the given text (exact match)

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
5

Ngoài ra, bạn có thể đạt được nó bằng cách sử dụng vòng lặp duy nhất để nó sẽ nhanh hơn nhiều.single loop so it will be much faster.

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
6

Xóa các dòng chứa một từ cụ thể

Chúng tôi có thể phải xóa các dòng khỏi một tệp chứa một từ khóa hoặc thẻ cụ thể trong một số trường hợp. Hãy cùng xem ví dụ để xóa các dòng khỏi tệp có chứa một chuỗi cụ thể ở bất cứ đâu trong dòng.

Example::

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
7

Xóa các dòng bắt đầu bằng từ/chuỗi cụ thể

Tìm hiểu cách xóa các dòng khỏi một tệp bắt đầu bằng một từ cụ thể. Trong ví dụ sau, chúng tôi sẽ xóa các dòng bắt đầu bằng từ ‘Thời gian.time‘.

Example::

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
8

Xóa văn bản cụ thể khỏi tệp văn bản

Nó cũng có thể là trường hợp bạn muốn xóa một chuỗi cụ thể khỏi một tệp nhưng không phải là dòng chứa nó. Hãy cùng xem ví dụ về cùng một

for i, line in enumerate(input_file):
    if i == 0:
        output.write(line)
    else:
        if not line.startswith('#'):
            output.write(line)
9

Để xóa tất cả các dòng trong một tệp và xóa tệp, chúng ta có thể sử dụng phương thức cắt ngắn () trên đối tượng tệp. Phương thức cắt () loại bỏ tất cả các dòng khỏi một tệp và đặt con trỏ tệp đến đầu tệp.

for i, line in enumerate(input_file):
    if i == 0 or not line.startswith('#'):
        output.write(line)
0

Làm thế nào để bạn xóa các dòng khỏi một tệp trong Python?

Điều tương tự cũng có thể được thực hiện bằng phương thức Seek () bằng cách thay đổi vị trí con trỏ để chúng ta không cần mở tệp hai lần ...
Mở tệp trong chế độ đọc và ghi (r+).
Đọc tất cả các dòng từ một tệp vào danh sách ..
Di chuyển con trỏ tệp đến đầu tệp bằng phương thức Seek () ..
Cắt ngắn tệp bằng phương thức cắt ngắn () ..

Làm thế nào để bạn loại bỏ các dòng khỏi một chuỗi trong Python?

Phương pháp 1: Sử dụng hàm thay thế để xóa ký tự dòng mới khỏi chuỗi trong Python ..
Phương pháp 2: Sử dụng hàm Dải () để xóa ký tự dòng mới khỏi chuỗi trong Python ..
Phương pháp 4: Sử dụng RE.hàm sub () để xóa một ký tự dòng mới khỏi chuỗi trong python ..

Làm thế nào để bạn xóa nhiều dòng trong Python?

Xóa nhiều dòng khỏi một tệp theo số dòng Đọc nội dung từ một dòng tệp gốc từng dòng và cho mỗi dòng, hãy theo dõi số dòng.Nếu số dòng của dòng hiện tại khớp với số dòng trong danh sách các số đã cho, thì hãy bỏ qua dòng đó, thì hãy thêm dòng trong tệp tạm thời / giả.

Làm cách nào để loại bỏ các dòng in trong Python?

Trong Python2.x Bạn có thể thêm dấu phẩy (,) ở cuối câu lệnh in sẽ loại bỏ dòng mới khỏi python in.Một phương pháp khác mà bạn có thể sử dụng để in Python Không có dòng mới là mô-đun tích hợp có tên SYS.add a comma (,) at the end of the print statement that will remove newline from print Python. Another method that you can use for Python print no newline is the built-in module called sys.