2012-09-12 27 views
5

tôi tò mò nếu họ là một số trăn kỳ diệu tôi không thể biết để thực hiện một chút phù phiếmPython: Split, dải, và tham gia trong một dòng

cho dòng:

csvData.append(','.join([line.split(":").strip() for x in L])) 

tôi 'm cố gắng chia một dòng trên :, cắt khoảng trắng xung quanh nó, và tham gia vào ,

vấn đề là, kể từ khi mảng được trả về từ line.split(":"), các

for x in L #<== L doesn't exist! 

gây các vấn đề kể từ khi tôi không có tên cho mảng trả về bởi line.split(":")

Vì vậy, tôi tò mò nếu có một mảnh sexy của cú pháp tôi có thể sử dụng để thực hiện điều này trong một shot?

Chúc mừng!

+0

dải cố định dải() – PandemoniumSyndicate

Trả lời

18
>>> line = 'a: b :c:d:e :f:gh ' 
>>> ','.join(x.strip() for x in line.split(':')) 
'a,b,c,d,e,f,gh' 

Bạn cũng có thể làm điều này:

>>> line.replace(':',',').replace(' ','') 
'a,b,c,d,e,f,gh' 
+0

Câu trả lời thứ hai, địa ngục có – PandemoniumSyndicate

+0

+1 cho 'replace()'. :) –

+4

Tôi thực sự thích câu trả lời đầu tiên, vì câu trả lời thứ hai kém mạnh mẽ hơn so với khoảng trắng. – DSM

0

Something như ?:

>>> L = "1:2:3:4" 
>>> result = ",".join([item.strip() for item in L.split(":")]) 
>>> result 
'1,2,3,4' 

Phải mất một lúc để có được một nắm trên comprehensions danh sách. Về cơ bản chúng chỉ là các vòng đóng gói khi bạn phá vỡ chúng.

Vì vậy, khi học tập, cố gắng chia nhỏ nó thành một vòng lặp bình thường, và sau đó dịch nó thành một danh sách hiểu.

Trong ví dụ của bạn, bạn không gán biến số line ở bất kỳ đâu, do đó, nó sẽ là lỗi ngay cả trong vòng lặp chuẩn.

>>> for x in L: 
...  items = line.split(":") 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
NameError: name 'line' is not defined 
>>> 
+1

Không cần phải xây dựng một danh sách ở giữa –

+0

Có, đúng, nhưng đối với người mới bắt đầu, điều này có thể gây nhầm lẫn là tại sao lại hoạt động. – monkut

0

Với một chuỗi S:

','.join([x.strip() for x in s.split(':')]) 
+2

không cần phải hiểu danh sách ở đây, chỉ '','. join (x.strip() cho x trong s.split (':')) '. –

+0

Đúng, mặc dù việc hiểu danh sách có thể làm rõ một phần của giải pháp. – arturhoo

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