Python xóa dòng khỏi tệp nếu chứa

Rivers Clothing có một tệp văn bản phẳng, rivers_emps.txt chứa dữ liệu nhân viên. Điều gì xảy ra nếu một nhân viên nghỉ việc?

Nội dung của river_emps. txt

100:Jane Smith
101:Daniel Williams
102:Steve Markham
103:Howie Manson
104:Wendy Wilson
105:Anne McEvans
106:Bev Doyle
107:Hal Holden
108:Mich Matthews
109:Paul Paulson

💬 câu hỏi. Làm thế nào chúng ta sẽ viết mã để loại bỏ dòng này?

Chúng ta có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau

  • Phương pháp 1. Sử dụng hiểu danh sách
  • Phương pháp 2. Sử dụng danh sách hiểu và cắt
  • Phương pháp 3. Sử dụng Danh sách Hiểu, Cắt lát và np.savetxt(),
  • Phương pháp 4. Sử dụng pop()
  • Phương pháp 5. Sử dụng
    orig_lines = [line.strip() for line in open('rivers_emps.txt')]
    new_lines = orig_lines[0:2] + orig_lines[3:] 
    
    with open('rivers_02.txt', 'w') as fp:
        fp.write('\n'.join(new_lines))
    0
  • Phương pháp 6. Xóa (các) hàng khỏi DataFrame

Phương pháp 1. Sử dụng hiểu danh sách

Ví dụ này sử dụng Khả năng hiểu danh sách để xóa một dòng cụ thể khỏi tệp văn bản phẳng

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = [l for l in orig_lines if not l.startswith('102')]

with open('rivers_01.txt', 'w') as fp:
    print(*new_lines, sep='\n', file=fp)

Đoạn mã trên sử dụng Khả năng hiểu danh sách để đọc nội dung của tệp văn bản phẳng thành Danh sách,

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
1. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
2

Sau đó, Tính năng Hiểu danh sách được sử dụng lại để nối từng phần tử vào Danh sách mới chỉ khi phần tử đó không bắt đầu bằng 102. Nếu xuất ra thiết bị đầu cuối, màn hình sau.

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
3

Như bạn có thể thấy, phần tử bắt đầu bằng 102 đã bị xóa

Tiếp theo, một tệp mới,

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
4, được mở ở chế độ ghi (
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
5) và Danh sách được tạo ở trên được ghi vào tệp với một ký tự xuống dòng (
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
6) được nối vào mỗi dòng. Nội dung của tập tin được hiển thị dưới đây

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Thủ thuật Python One-Liner 9 - Hiểu danh sách lồng nhau

Python xóa dòng khỏi tệp nếu chứa

Xem video này trên YouTube


Phương pháp 2. Sử dụng danh sách hiểu và cắt

Ví dụ này sử dụng List Comprehension và Slicing để xóa một dòng cụ thể khỏi tệp văn bản phẳng

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))

Đoạn mã trên sử dụng Khả năng hiểu danh sách để đọc nội dung của tệp văn bản phẳng thành Danh sách,

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
1. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
9

Sau đó Slicing được sử dụng để trích xuất tất cả các phần tử, ngoại trừ phần tử hai (2). Kết quả lưu vào

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 
np.savetxt('rivers_03.txt', new_lines, delimiter='\n', fmt='%s')
0. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Như bạn có thể thấy, phần tử thứ hai (2) đã bị xóa

Tiếp theo, một tệp mới,

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 
np.savetxt('rivers_03.txt', new_lines, delimiter='\n', fmt='%s')
2, được mở ở chế độ ghi (
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
5) và Danh sách được tạo ở trên được ghi vào tệp với một ký tự xuống dòng (
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
6) được nối vào mỗi dòng. Nội dung của tập tin được hiển thị dưới đây

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Hướng dẫn cơ bản để cắt lát trong Python

Python xóa dòng khỏi tệp nếu chứa

Xem video này trên YouTube


Phương pháp 3. Sử dụng Cắt lát và np. savetxt()

Ví dụ này sử dụng hàm np.savetxt() của List Comprehension, Slicing và NumPy để xóa một dòng cụ thể khỏi tệp văn bản phẳng

Trước khi tiếp tục, vui lòng đảm bảo rằng thư viện NumPy đã được cài đặt để đảm bảo mã này chạy không có lỗi

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 
np.savetxt('rivers_03.txt', new_lines, delimiter='\n', fmt='%s')

Dòng đầu tiên nhập thư viện NumPy

Dòng sau sử dụng tính năng Hiểu danh sách để đọc nội dung của tệp văn bản phẳng vào Danh sách,

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
1. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
9

Sau đó, Slicing được áp dụng để trích xuất tất cả các phần tử, ngoại trừ phần tử hai (2). Kết quả lưu vào

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 
np.savetxt('rivers_03.txt', new_lines, delimiter='\n', fmt='%s')
0. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Như bạn có thể thấy, phần tử thứ hai (2) đã bị xóa

Dòng mã cuối cùng gọi np.savetxt() và truyền cho nó ba (3) đối số

  • Tên tệp (‘
    import numpy as np 
    orig_lines = [line.strip() for line in open('rivers_emps.txt')]
    orig_lines.pop(2)
    np.savetxt('rivers_04.txt', orig_lines, delimiter='\n', fmt='%s')
    2‘)
  • Một lần lặp, trong trường hợp này, một Danh sách (_______12_______0)
  • Dấu phân cách (nối vào mỗi dòng) – ký tự xuống dòng (
    orig_lines = [line.strip() for line in open('rivers_emps.txt')]
    new_lines = orig_lines[0:2] + orig_lines[3:] 
    
    with open('rivers_02.txt', 'w') as fp:
        fp.write('\n'.join(new_lines))
    6)
  • định dạng. Các chuỗi được định nghĩa là
    import numpy as np 
    orig_lines = [line.strip() for line in open('rivers_emps.txt')]
    orig_lines.pop(2)
    np.savetxt('rivers_04.txt', orig_lines, delimiter='\n', fmt='%s')
    5

Nội dung của

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.pop(2)
np.savetxt('rivers_04.txt', orig_lines, delimiter='\n', fmt='%s')
2 hiển thị bên dưới

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Hướng dẫn NumPy - Mọi thứ bạn cần biết để bắt đầu

Python xóa dòng khỏi tệp nếu chứa

Xem video này trên YouTube


Phương pháp 4. Sử dụng pop()

Ví dụ này sử dụng hàm pop() để xóa một dòng cụ thể khỏi tệp văn bản phẳng

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.pop(2)
np.savetxt('rivers_04.txt', orig_lines, delimiter='\n', fmt='%s')

Dòng đầu tiên nhập thư viện NumPy

Dòng sau sử dụng tính năng Hiểu danh sách để đọc nội dung của tệp văn bản phẳng vào Danh sách,

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
1. Nếu xuất ra thiết bị đầu cuối, màn hình sau

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
9

Sau đó, phương thức pop() được gọi và truyền một (1) đối số, chỉ mục của phần tử cần xóa

Trong trường hợp này, nó là phần tử thứ hai

Nếu Danh sách này được xuất ra thiết bị đầu cuối, phần sau sẽ hiển thị

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Như trong Phương pháp 3, kết quả lưu vào tệp văn bản phẳng. Trong trường hợp này,

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.remove('102:Steve Markham')
np.savetxt('rivers_05.txt', orig_lines, delimiter='\n', fmt='%s')
3. Nội dung giống như trong các ví dụ trước

Danh sách Python pop()

Python xóa dòng khỏi tệp nếu chứa

Xem video này trên YouTube

💡Lưu ý. Hàm pop() xóa chỉ mục thích hợp và trả về nội dung cần chụp nếu cần


Phương pháp 5. Sử dụng loại bỏ()

Ví dụ này sử dụng hàm

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.remove('102:Steve Markham')
np.savetxt('rivers_05.txt', orig_lines, delimiter='\n', fmt='%s')
5 để xóa một dòng cụ thể khỏi tệp văn bản phẳng

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.remove('102:Steve Markham')
np.savetxt('rivers_05.txt', orig_lines, delimiter='\n', fmt='%s')

Mã này hoạt động chính xác như mã trong Phương pháp 4. Tuy nhiên, thay vì chuyển vị trí của phần tử cần xóa, hàm này yêu cầu nội dung của toàn bộ dòng bạn cần xóa

Sau đó, hàm

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.remove('102:Steve Markham')
np.savetxt('rivers_05.txt', orig_lines, delimiter='\n', fmt='%s')
5 được gọi và truyền một (1) đối số, chỉ mục cần xóa. Trong trường hợp này, nó là phần tử thứ hai. Nếu Danh sách này được xuất ra thiết bị đầu cuối, phần sau sẽ hiển thị

orig_lines = [line.strip() for line in open('rivers_emps.txt')]
new_lines = orig_lines[0:2] + orig_lines[3:] 

with open('rivers_02.txt', 'w') as fp:
    fp.write('\n'.join(new_lines))
7

Như đã trình bày trong các ví dụ trước, kết quả được lưu vào một tệp văn bản phẳng. Trong trường hợp này,

import numpy as np 
orig_lines = [line.strip() for line in open('rivers_emps.txt')]
orig_lines.remove('102:Steve Markham')
np.savetxt('rivers_05.txt', orig_lines, delimiter='\n', fmt='%s')
8

Loại bỏ danh sách Python()

Python xóa dòng khỏi tệp nếu chứa

Xem video này trên YouTube


Thưởng. Xóa (các) hàng khỏi DataFrame

Tệp CSV còn được gọi là tệp văn bản phẳng. Mã này chỉ cho bạn cách dễ dàng xóa một hoặc nhiều hàng khỏi tệp CSV

import pandas as pd
import numpy as np

staff = {
    'First' : ['Alice', 'Micah', 'James', 'Mark'],
    'Last'  : ['Smith', 'Jones', 'Watts', 'Hunter'],
    'Rate'  : [30, 40, 50, 37],
    'Age'   : [23, 29, 19, 45]}

indexes=['FName', 'LName', 'Rate', 'Age']
df = pd.DataFrame(staff, index=indexes)

df1 = df.drop(index=['Age'])
df.to_csv('staff.csv', index=False)

✨Thử thách Finxter
Tìm 2 cách bổ sung để loại bỏ các dòng


Tóm lược

Bài viết này đã cung cấp năm (5) cách xóa một dòng khỏi tệp để chọn cách phù hợp nhất cho yêu cầu viết mã của bạn