Câu hỏi Python nhiều điều kiện IN chuỗi


Cách hợp nhất điều kiện theo định dạng mảng

lines = [line for line in open('text.txt')if 
        '|E|' in line and
        'GetPastPaymentInfo' in line and
        'CheckData' not in line and
        'UpdatePrintStatus' not in line
        ]

như

lines = [line for line in open('text.txt')if 
        ['|E|','GetPastPaymentInfo'] in line and
        ['CheckData','UpdatePrintStatus'] not in line]

9
2018-06-12 08:01


gốc


Bạn không thể; danh sách sẽ không in các line. Bạn có thể sử dụng all. - jonrsharpe


Các câu trả lời:


Bạn có thể sử dụng biểu thức máy phát trong all chức năng kiểm tra tư cách thành viên cho tất cả các yếu tố:

lines = [line for line in open('text.txt') if 
        all(i in line for i in ['|E|','GetPastPaymentInfo'])and
        all(j not in line for j in ['CheckData','UpdatePrintStatus'])]

Hoặc nếu bạn muốn kiểm tra các từ, bạn có thể tách các dòng và sử dụng intersection phương pháp trong set  1:

lines = [line for line in open('text.txt') if 
        {'|E|','GetPastPaymentInfo'}.intersection(line.split()) and not {'CheckData','UpdatePrintStatus'}.intersection(line.split())]

Lưu ý rằng bạn cần phải đặt các từ của bạn trong một set thay vì danh sách.


1) Lưu ý rằng kể từ set sử dụng đối tượng bảng băm để lưu trữ các phần tử của nó và trả lại các mục, kiểm tra tư cách thành viên có thứ tự O (1) và nó hiệu quả hơn list có thứ tự O (N).


8
2018-06-12 08:04



Người đầu tiên làm việc cho tôi nhưng phương pháp giao cắt không hoạt động - AlexLeung