2011-12-24 30 views
43

Tôi có bốn chuỗi và bất kỳ chuỗi nào trong số chúng có thể trống. Tôi cần phải tham gia chúng thành một chuỗi với khoảng cách giữa chúng. Nếu tôi sử dụng:Tham gia nhiều chuỗi nếu chúng không rỗng trong Python

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4 

Kết quả là khoảng trắng ở đầu chuỗi mới nếu string1 trống. Ngoài ra, tôi có ba khoảng trống nếu string2string3 trống.

Làm cách nào để tôi có thể dễ dàng tham gia chúng mà không có khoảng trống khi tôi không cần chúng?

Trả lời

100
>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(filter(None, strings)) 
'foo bar moo' 

Bằng cách sử dụng None trong cuộc gọi filter(), thao tác này sẽ xóa tất cả các thành phần bị lỗi.

-2
strings = ['foo','','bar','moo'] 
' '.join([x for x in strings if x is not '']) 
'foo bar moo' 
+4

Sử dụng tốt hơn '! =' Thay vì 'không phải là'. Nó có thể hoạt động, nhưng nó không được bảo đảm. Hoặc chỉ sử dụng '[x cho x trong chuỗi nếu x]'. –

+5

** Không bao giờ ** sử dụng 'không phải là 'cho những người không phải là người độc thân nếu bạn không thực sự muốn kiểm tra xem cả hai đều có cùng một đối tượng hay không! – ThiefMaster

9

nếu bạn biết rằng các dây không có hàng đầu/dấu khoảng trắng:

>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(x for x in strings if x) 
'foo bar moo' 

khác:

>>> strings = ['foo ','',' bar', ' ', 'moo'] 
>>> ' '.join(x.strip() for x in strings if x.strip()) 
'foo bar moo' 

và nếu bất kỳ của các chuỗi có phi hàng đầu/dấu khoảng trắng, bạn có thể cần phải làm việc chăm chỉ hơn. Hãy làm rõ những gì bạn thực sự có.

+0

Chuỗi đến từ các trường văn bản nhập, vì vậy mọi thứ đều có thể. Cảm ơn! – Goran

Các vấn đề liên quan