Nếu trống rỗng là kết quả quan trọng, có lẽ tốt nhất để kiểm tra chuỗi gốc đầu tiên:
x = ''
if x:
# Original string was non-empty, split it
splitx = x.split(',')
if any(splitx):
# There was at least one character in the original string that wasn't a comma
các thử nghiệm quy tắc đầu tiên ra chuỗi ban đầu trống rỗng, điều thứ hai sử dụng any
quy tắc ra chuỗi là gì, nhưng các nhân vật tách, và do đó trở lại một tổng thể bó chuỗi rỗng, nhưng không có chuỗi không trống. Miễn là bạn có một chuỗi không trống, nó sẽ chuyển.
Lưu ý: Trong trường hợp bạn đang cố gắng phân tích cú pháp tệp CSV, không sử dụng .split(',')
; có csv
module xử lý chính xác (bao gồm thoát, trích dẫn, v.v.) và phải ALWAYS được sử dụng để phân tích cú pháp CSV, không bao giờ cuộn phân tích cú pháp của riêng bạn. Đã thêm tiền thưởng: csv
sẽ chuyển đổi các đầu vào ''
thành []
hàng mà bạn có thể kiểm tra tính trung thực trực tiếp, chứ không phải ['']
như str.split
. Ví dụ:
>>> import csv, io
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> [row for row in csv.reader(f) if row] # Stripping easily
[['a', 'b', 'c'], ['1', '2', '3']]
vs phương pháp tương tự với str.split(',')
mà vẫn không xử lý trích dẫn, đào thoát, v.v .:
>>> f = io.StringIO('\n\na,b,c\n1,2,3\n\n')
>>> stripped = (line.rstrip('\r\n') for line in f) # Must manually strip line endings first
>>> [line.split(',') for line in stripped if line]
[['a', 'b', 'c'], ['1', '2', '3']]
tôi nhìn thấy. nó không phải là một danh sách trống. Tôi hy vọng tôi sẽ loại trừ tình hình. Tôi đang nghĩ cách làm. – Tony
Cuối cùng, bạn đang cố gắng làm gì? Không có vấn đề gì trong việc cố gắng tách một danh sách trống ở nơi đầu tiên, bạn có thể chuyển mã này bằng một câu lệnh if-if hoặc if-expression trong một danh sách hiểu: 'if s1: s2 = s1.split (',') .. .' – smci