2009-06-18 26 views
10

Tôi có một chuỗi, ví dụ:Chuỗi Cắt lát Python

s = "this is a string, a" 

nơi '' (dấu phẩy) sẽ luôn luôn là ký tự cuối cùng 3, aka s [-3].

Tôi đang nghĩ cách xóa ',' nhưng chỉ có thể nghĩ đến việc chuyển chuỗi thành danh sách, xóa nó và chuyển đổi nó thành chuỗi. Tuy nhiên điều này có vẻ hơi quá nhiều cho công việc đơn giản.

Làm cách nào để tôi thực hiện điều này theo cách đơn giản hơn?

+4

Tôi lấy nó string.replace là ra khỏi câu hỏi? Bạn có cần bảo tồn các dấu phẩy khác trong chuỗi không? –

+0

Tôi có.Hãy để tôi đi xem xét string.replace – sqram

+0

thay thế sẽ hữu ích, nếu bạn cần phải loại bỏ nhiều sự xuất hiện của một chất nền, trong trường hợp này nó sẽ chậm hơn quá –

Trả lời

28

Thông thường, bạn sẽ chỉ làm:

s = s[:-3] + s[-2:] 

Các s[:-3] mang đến cho bạn một chuỗi lên đến, nhưng không bao gồm, dấu phẩy mà bạn muốn loại bỏ ("this is a string") và s[-2:] mang đến cho bạn một chuỗi bắt đầu một nhân vật ngoài dấu phẩy đó (" a").

Sau đó, tham gia hai chuỗi lại với nhau sẽ cung cấp cho bạn những gì bạn đã theo dõi ("this is a string a").

+0

Cảm ơn bạn =]. Vẫn mở cho các đề xuất khác nếu có ai muốn soi sáng – sqram

+0

Thanx pax, bạn có nhận được phần sau khi bạn chỉnh sửa câu hỏi không :) –

+0

Không, tôi chỉ ở trong đó để chia sẻ tình yêu xung quanh. Nhưng nghiêm túc, không, SO không làm việc theo cách đó. Khi tôi tìm thấy một câu trả lời gần như giống như những gì tôi định nói, tôi upvote nó và đôi khi mở rộng. Tất cả các đại diện đi đến bạn. Nhưng dù sao, tôi không cần nó, tôi đã đi đến việc thực hiện tôi sẽ không bao giờ bắt Jon Skeet và thậm chí JaredPar là kéo đi bây giờ mà tôi phải dành nhiều thời gian làm công việc thực sự :-) – paxdiablo

3

Chuỗi Python không thay đổi được. Điều này có nghĩa là bạn phải tạo ít nhất 1 chuỗi mới để xóa dấu phẩy, thay vì chỉnh sửa chuỗi tại chỗ bằng ngôn ngữ như C.

1

Để xóa mọi ký tự ',' trong văn bản, bạn có thể thử

s = s.split(',') 
>> ["this is a string", " a"] 
s = "".join(s) 
>> "this is a string a" 

Hoặc trong một dòng:

s0 = "".join(s.split(',')) 
7

một vài biến thể, bằng cách sử dụng "xoá dấu phẩy cuối cùng" chứ không phải "xóa ký tự cuối cùng thứ ba" là:

s[::-1].replace(",","",1)[::-1] 

hoặc

''.join(s.rsplit(",", 1)) 

Nhưng đây là khá xấu xí. Hơi tốt hơn là:

a, _, b = s.rpartition(",") 
s = a + b 

Đây có thể là cách tiếp cận tốt nhất nếu bạn không biết vị trí của dấu phẩy (trừ dấu phẩy cuối cùng) và hiệu quả cần "thay thế từ bên phải". Tuy nhiên, Anurag's answer là loại pythonic hơn cho "xóa ký tự cuối cùng thứ ba".

0

Cách đơn giản nhất là: Bạn có thể sử dụng thay thế chức năng như: -

>>> s = 'this is a string, a' 
>>> s = s.replace(',','') 
>>> s 
'this is a string a' 

Ở đây, replace() chức năng tìm kiếm nhân vật '' và thay thế nó bằng cách '' tức là nhân vật rỗng

Lưu ý rằng hàm replace() mặc định tất cả ',' nhưng nếu bạn chỉ muốn thay thế một số ',' trong một số trường hợp bạn có thể sử dụng: s.replace (',', '', 1)

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