2010-08-18 19 views
9

Tôi có một chuỗiPython Hủy bỏ Các bộ phận của chuỗi bởi chỉ số

string='texttexttextblahblah",".' 

và những gì tôi muốn làm là cắt của một số các nhân vật ngoài cùng bên phải bằng cách đánh chỉ số và gán nó vào string để string sẽ bằng texttexttextblahblah"

Tôi đã xem xét và tìm cách in bằng cách lập chỉ mục, chứ không phải cách gán lại biến thực tế cần cắt.

+0

thể trùng lặp của [Python Di chuyển 3 ký tự cuối cùng của một chuỗi] (http://stackoverflow.com/questions/1798465/ python-remove-last-3-characters-of-a-string) – outis

Trả lời

14

Chỉ định lại những gì bạn đã in cho biến.

>>> string='texttexttextblahblah",".' 
>>> string = string[:-3] 
>>> string 
'texttexttextblahblah"' 
>>> 

Ngoài ra, tránh sử dụng tên của các thư viện hoặc dựng sẵn (string) cho các biến

Trừ khi bạn biết chính xác có bao nhiêu textblah của bạn sẽ có, sử dụng .find() như Brent gợi ý (hoặc .index(x), giống như tìm, ngoại trừ than phiền khi nó không tìm thấy x).

Nếu bạn muốn có dấu đó ", chỉ cần thêm một giá trị vào giá trị nó bắt đầu. (Hoặc chỉ cần find giá trị mà bạn thực sự muốn chia tại, ,)

mystr = mystr[:mystr.find('"') + 1] 
+0

Đây chính xác là những gì tôi đã hy vọng. Cảm ơn bạn!!! – Brian

4

Strings là không thay đổi, do đó bạn có thể không thực sự thay đổi chuỗi tại chỗ. Bạn sẽ cần phải cắt ra phần bạn muốn và sau đó gán lại nó cho biến ban đầu.

Có gì đó giống như những gì bạn muốn không? (Lưu ý tôi rời ra lưu trữ các chỉ số trong một biến vì tôi không chắc chắn làm thế nào bạn đang sử dụng này):

>>> s = 'texttexttextblahblah",".' 
>>> s.index('"') 
20 
>>> s = s[:20] 
>>> s 
'texttexttextblahblah' 
5

Nếu bạn cần cái gì đó hoạt động giống như một chuỗi, nhưng là có thể thay đổi bạn có thể sử dụng một bytearray

>>> s=bytearray('texttexttextblahblah",".') 
>>> s[20:]='' 
>>> print s 
texttexttextblahblah 

bytearray có tất cả các phương pháp chuỗi thông thường

2

Bản thân tôi muốn làm điều đó mà không cần lập chỉ mục: (phân vùng ưa thích của tôi đã được nhận xét là người chiến thắng trong tốc độ và clearn ess trong ý kiến ​​vì vậy tôi cập nhật mã gốc)

s = 'texttexttextblahblah",".' 
s,_,_ = s.partition(',') 
print s 

quả

texttexttextblahblah" 
+0

Ông ta muốn "kết quả (có thể là một lỗi đánh máy)", –

+0

's = s [: s.find ('"')] 'hiệu quả hơn –

+0

Tôi đã tự thay đổi, như tôi đã nhận thấy nó, tôi thích phân chia nhiều hơn pythonic hoặc phân vùng bản thân mình. Đó là, tôi thích "Làm cho nó hoạt động một cách rõ ràng, sau đó tối ưu hóa." –

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