2011-02-09 83 views
93

Tôi muốn xóa ký tự đầu tiên của chuỗi.Xóa ký tự đầu tiên của chuỗi

Ví dụ: chuỗi của tôi bắt đầu bằng số : và tôi chỉ muốn loại bỏ điều đó. Có một số lần xuất hiện của : trong chuỗi không được xóa.

Tôi đang viết mã bằng Python.

Trả lời

165
s = ":dfa:sif:e" 
print s[1:] 

in

dfa:sif:e 
+12

Nếu thứ là câu trả lời được chấp nhận thì câu hỏi phải là "làm thế nào để loại bỏ ký tự đầu tiên của chuỗi". – Spaceghost

+1

@Spaceghost: OP tuyên bố "Cụ thể là tôi muốn xóa ký tự đầu tiên". –

+3

Bạn nói đúng, tôi chỉ phản ứng với sự khác biệt giữa tiêu đề và nội dung câu hỏi .. Trong tình trạng khó hiểu, nên dành thời gian để uống cà phê. :-) – Spaceghost

15

Tùy thuộc vào cấu trúc của chuỗi, bạn có thể sử dụng lstrip:

str = str.lstrip(':') 

Nhưng điều này sẽ loại bỏ tất cả dấu hai chấm ngay từ đầu, tức là nếu bạn có ::foo , kết quả sẽ là foo. Nhưng chức năng này rất hữu ích nếu bạn cũng có các chuỗi không bắt đầu bằng dấu hai chấm và bạn không muốn xóa ký tự đầu tiên sau đó.

2

xóa char:

def del_char(string, indexes): 

    'deletes all the indexes from the string and returns the new one' 

    return ''.join((char for idx, char in enumerate(string) if idx not in indexes)) 

nó sẽ xoá tất cả các ký tự có trong danh mục; bạn có thể sử dụng nó trong trường hợp của mình với del_char(your_string, [0])

29

Vấn đề của bạn có vẻ không rõ ràng. Bạn nói rằng bạn muốn loại bỏ "một nhân vật từ một vị trí nhất định" sau đó tiếp tục nói rằng bạn muốn loại bỏ một nhân vật cụ thể.

Nếu bạn chỉ cần loại bỏ các ký tự đầu tiên bạn sẽ làm gì:

s = ":dfa:sif:e" 
fixed = s[1:] 

Nếu bạn muốn xóa một ký tự tại một vị trí cụ thể, bạn sẽ làm gì:

s = ":dfa:sif:e" 
fixed = s[0:pos]+s[pos+1:] 

Nếu bạn cần để xóa một ký tự cụ thể, hãy nói ':', lần đầu tiên nó gặp phải trong chuỗi sau đó bạn sẽ làm:

s = ":dfa:sif:e" 
fixed = ''.join(s.split(':', 1)) 
+4

Ví dụ cuối cùng có thể được thực hiện dễ dàng hơn bằng cách sử dụng 's.replace (": "," ", 1)' - –

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