Đầu tiên loại bỏ ;
từ mép bên phải của chuỗi:
s.rstrip(';').split(';')
Bạn cũng có thể sử dụng filter()
(mà sẽ lọc ra cũng phần tử rỗng mà không được tìm thấy ở phần cuối của chuỗi) . Nhưng ở trên thực sự là cách tiếp cận sạch nhất theo ý kiến của tôi, khi bạn muốn tránh phần tử trống ở cuối, kết quả là ";
" các ký tự xảy ra ở cuối chuỗi.
EDIT: Thực ra chính xác hơn ở trên (nơi ở trên là vẫn còn chính xác hơn bằng filter()
) là phương pháp sau đây:
(s[:-1] if s.endswith(';') else s).split(';')
này sẽ chỉ xóa các yếu tố cuối cùng, và chỉ khi nó sẽ được tạo ra trống.
kiểm tra cả ba giải pháp mà bạn sẽ thấy, mà họ đưa ra kết quả khác nhau:
>>> def test_solution(solution):
cases = [
'James;Joseph;Arun;',
'James;;Arun',
'James;Joseph;Arun',
';James;Joseph;Arun',
'James;Joseph;;;',
';;;',
]
for case in cases:
print '%r => %r' % (case, solution(case))
>>> test_solution(lambda s: s.split(';')) # original solution
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun', '']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph', '', '', '']
';;;' => ['', '', '', '']
>>> test_solution(lambda s: filter(bool, s.split(';')))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph']
';;;' => []
>>> test_solution(lambda s: s.rstrip(';').split(';'))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph']
';;;' => ['']
>>> test_solution(lambda s: (s[:-1] if s.endswith(';') else s).split(';'))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph', '', '']
';;;' => ['', '', '']
Xin đừng sử dụng 'str' như một tên biến. Nó ẩn 'str'. –
@ Mark Byers cảm ơn bạn đã bình luận của bạn, tên var thực tế của tôi là khác nhau. – Jisson