Tổng quan về tất cả các cách bạn có thể cắt và cắt chuỗi bằng ngôn ngữ lập trình Python. Với rất nhiều ví dụ / mẫu mã!

Bạn đang xem : python cắt một chuỗi

Cắt và Lát chuỗi trong Python

Chuỗi Python dưới dạng chuỗi ký tự

Chuỗi Python là chuỗi các ký tự riêng lẻ và chia sẻ các phương thức truy cập cơ bản của chúng với các chuỗi Python khác – danh sách và bộ giá trị. Cách đơn giản nhất để trích xuất các ký tự đơn từ các chuỗi (và các thành viên riêng lẻ từ bất kỳ chuỗi nào) là giải nén chúng thành các biến tương ứng.

[python]
& gt; & gt; & gt; s = ‘Don’
& gt; & gt; & gt; s
‘Don’
& gt; & gt; & gt; a, b, c = s # Giải nén thành các biến
& gt; & gt; & gt; a
‘D’
& gt; & gt; & gt; b
‘o’
& gt; & gt; & gt; c
‘n’
[/ python]

Thật không may, chúng ta không thường xuyên biết trước số lượng biến mà chúng ta sẽ cần để lưu trữ mọi ký tự trong chuỗi. Và nếu số lượng biến chúng tôi cung cấp không khớp với số ký tự trong chuỗi, thì Python sẽ cho chúng tôi lỗi.

[python]
s = ‘Don Quijote’
a, b, c = s
Traceback (cuộc gọi gần đây nhất sau cùng):
Tệp “”, dòng 1, trong
ValueError: quá nhiều giá trị để giải nén
[/ python]

Truy cập các ký tự trong chuỗi bằng chỉ mục trong Python

Thông thường, sẽ hữu ích hơn khi truy cập các ký tự riêng lẻ của một chuỗi bằng cách sử dụng cú pháp lập chỉ mục giống mảng của Python. Ở đây, cũng như với tất cả các chuỗi, điều quan trọng cần nhớ là lập chỉ mục dựa trên số không; nghĩa là, mục đầu tiên trong dãy là số 0.

[python]
& gt; & gt; & gt; s = ‘Don Quijote’
& gt; & gt; & gt; s [4] # Nhận ký tự thứ 5
‘Q’
[/ python]

Nếu bạn muốn bắt đầu đếm từ cuối chuỗi, thay vì bắt đầu, hãy sử dụng chỉ mục âm. Ví dụ: chỉ số -1 đề cập đến ký tự ngoài cùng bên phải của chuỗi.

[python]
& gt; & gt; & gt; s [-1]
‘e’
& gt; & gt; & gt; s [-7]
‘Q’
[/ python]

Các chuỗi trong Python là bất biến, đây chỉ là một cách nói hoa mỹ rằng một khi chúng đã được tạo, bạn không thể thay đổi chúng. Cố gắng làm như vậy sẽ gây ra lỗi.

[python]
& gt; & gt; & gt; s [7]
‘j’
& gt; & gt; & gt; s [7] = ‘x’
Traceback (cuộc gọi gần đây nhất sau cùng):
Tệp “”, dòng 1, trong
TypeError: Đối tượng ‘str’ không hỗ trợ gán mục
[/ python]

Nếu bạn muốn sửa đổi một chuỗi, bạn phải tạo nó dưới dạng một chuỗi hoàn toàn mới. Trong thực tế, nó dễ dàng. Chúng tôi sẽ xem xét cách thức sau một phút.

Cắt chuỗi Python

Trước đó, nếu bạn muốn trích xuất một đoạn gồm nhiều ký tự, với vị trí và kích thước đã biết thì sao? Điều đó khá dễ dàng và trực quan. Chúng tôi mở rộng cú pháp dấu ngoặc vuông một chút để có thể chỉ định không chỉ vị trí bắt đầu của phần mà chúng tôi muốn mà còn cả nơi kết thúc của nó.

[python]
& gt; & gt; & gt; s [4: 8]
‘Quij’
[/ python]

Hãy xem điều gì đang xảy ra ở đây. Cũng giống như trước đây, chúng tôi chỉ định rằng chúng tôi muốn bắt đầu ở vị trí 4 (dựa trên số không) trong chuỗi. Nhưng giờ đây, thay vì tự thỏa mãn với một ký tự duy nhất từ ​​chuỗi, chúng tôi đang nói rằng chúng tôi muốn có nhiều ký tự hơn, tối đa nhưng không bao gồm ký tự ở vị trí 8.

Bạn có thể nghĩ rằng bạn cũng sẽ nhận được nhân vật ở vị trí số 8. Nhưng đó không phải là cách nó hoạt động. Đừng lo lắng – bạn sẽ quen thôi. Nếu hữu ích, hãy nghĩ đến chỉ mục thứ hai (chỉ mục sau dấu hai chấm) để chỉ định ký tự đầu tiên mà bạn không muốn. Ngẫu nhiên, một lợi ích của cơ chế này là bạn có thể nhanh chóng cho biết bạn sắp kết thúc bằng bao nhiêu ký tự chỉ bằng cách lấy chỉ số thứ hai trừ đi chỉ số đầu tiên.

Sử dụng cú pháp này, bạn có thể bỏ qua một trong hai hoặc cả hai chỉ số. Chỉ mục đầu tiên, nếu bị bỏ qua, mặc định là 0, để đoạn mã của bạn bắt đầu từ đầu chuỗi ban đầu; thứ hai mặc định ở vị trí cao nhất trong chuỗi, để đoạn của bạn kết thúc ở cuối chuỗi ban đầu. Việc bỏ qua cả hai chỉ số có thể không có nhiều tác dụng trong thực tế; như bạn có thể đoán, nó chỉ trả về toàn bộ chuỗi ban đầu.

[python]
& gt; & gt; & gt; s [4:]
‘Quijote’ # Trả về từ vị trí 4 đến cuối chuỗi
& gt; & gt; & gt; s [: 4]
‘Don’ # Trả về từ đầu đến vị trí 3
& gt; & gt; & gt; s [:]
‘Don Quijote’
[/ python]

Nếu bạn vẫn đang loay hoay tìm hiểu thực tế là, ví dụ: s [0: 8] trả về mọi thứ lên đến nhưng không bao gồm , ký tự ở vị trí 8, thì có thể hữu ích nếu bạn lăn tăn vấn đề này trong đầu: đối với bất kỳ giá trị nào của chỉ mục n mà bạn chọn, giá trị của s [: n] + s [n:] < / code> sẽ luôn giống với chuỗi đích ban đầu. Nếu cơ chế lập chỉ mục bao gồm, ký tự ở vị trí n sẽ xuất hiện hai lần.

[python]
& gt; & gt; & gt; s [6]
'tôi'
& gt; & gt; & gt; s [: 6] + s [6:]
'Don Quijote'
[/ python]

Cũng giống như trước đây, bạn có thể sử dụng số âm làm chỉ số, trong trường hợp đó, phép đếm bắt đầu ở cuối chuỗi (với chỉ số -1) thay vì ở đầu.

[python]
& gt; & gt; & gt; s [-7: -3]
'Quij'
[/ python]

Bỏ qua ký tự trong khi tách chuỗi Python

Biến thể cuối cùng của cú pháp dấu ngoặc vuông là thêm tham số thứ ba, tham số này chỉ định 'sải chân' hoặc số ký tự bạn muốn di chuyển về phía trước sau khi mỗi ký tự được truy xuất từ ​​chuỗi ban đầu. Ký tự được truy xuất đầu tiên luôn tương ứng với chỉ mục trước dấu hai chấm; nhưng sau đó, con trỏ di chuyển về phía trước bất kỳ ký tự nào bạn chỉ định làm sải chân của mình và truy xuất ký tự tại vị trí đó. Và cứ tiếp tục như vậy, cho đến khi đạt đến hoặc vượt quá chỉ số kết thúc. Nếu, như trong các trường hợp chúng ta đã gặp cho đến nay, tham số bị bỏ qua, thì tham số này sẽ được đặt mặc định là 1, để mọi ký tự trong phân đoạn được chỉ định đều được truy xuất. Một ví dụ làm rõ hơn điều này.

[python]
& gt; & gt; & gt; s [4: 8]
'Quij'
& gt; & gt; & gt; s [4: 8: 1] # 1 vẫn là giá trị mặc định, vì vậy kết quả tương tự
'Quij'
& gt; & gt; & gt; s [4: 8: 2] # Trả về một ký tự, sau đó chuyển tiếp 2 vị trí, v.v.
'Qi' # Khá thú vị!
[/ python]

Bạn cũng có thể chỉ định một bước tiêu cực. Như bạn có thể mong đợi, điều này cho thấy rằng bạn muốn Python quay ngược lại khi truy xuất các ký tự.

[python]
& gt; & gt; & gt; s [8: 4: -1]
'ojiu'
[/ python]

Như bạn có thể thấy, vì chúng ta đang đi ngược lại, nên chỉ số bắt đầu cao hơn chỉ số kết thúc sẽ có ý nghĩa (nếu không sẽ không có gì được trả về).

[python]
& gt; & gt; & gt; s [4: 8: -1]
''
[/ python]

Vì lý do đó, nếu bạn chỉ định một bước phủ định, nhưng bỏ qua chỉ mục đầu tiên hoặc chỉ mục thứ hai, Python sẽ mặc định giá trị còn thiếu thành bất kỳ giá trị nào có ý nghĩa trong các trường hợp: chỉ mục bắt đầu đến cuối chuỗi và chỉ mục kết thúc đến đầu chuỗi. Tôi biết, điều đó có thể khiến bạn đau đầu khi nghĩ về nó, nhưng Python biết nó đang làm gì.

[python]
& gt; & gt; & gt; s [4 :: - 1] # Chỉ mục kết thúc mặc định là đầu chuỗi
'Q noD'
& gt; & gt; & gt; s [: 4: -1] # Chỉ mục bắt đầu mặc định ở cuối chuỗi
'etojiu'
[/ python]

Vì vậy, đó là cú pháp dấu ngoặc vuông, cho phép bạn truy xuất các phần ký tự nếu bạn biết vị trí chính xác của phần được yêu cầu của mình trong chuỗi.

Nhưng nếu bạn muốn truy xuất một đoạn dựa trên nội dung của chuỗi mà chúng tôi có thể không biết trước thì sao?

Kiểm tra nội dung

Python cung cấp các phương thức chuỗi cho phép chúng ta chia nhỏ một chuỗi theo các dấu phân cách mà chúng ta có thể chỉ định. Nói cách khác, chúng ta có thể yêu cầu Python tìm kiếm một chuỗi con nhất định trong chuỗi mục tiêu của chúng ta và chia chuỗi mục tiêu xung quanh chuỗi con đó. Nó thực hiện điều đó bằng cách trả về danh sách các chuỗi con kết quả (trừ các dấu phân cách). Nhân tiện, chúng ta có thể chọn không chỉ định dấu phân cách rõ ràng, trong trường hợp đó, nó được mặc định là ký tự khoảng trắng (dấu cách, '\ t', '\ n', '\ r', '\ f') hoặc chuỗi của những ký tự như vậy.

Hãy nhớ rằng các phương thức này không ảnh hưởng đến chuỗi mà bạn gọi chúng; họ chỉ trả về một chuỗi mới.

[python]
& gt; & gt; & gt; s.split ()
['Don', 'Quijote']
& gt; & gt; & gt; s
'Don Quijote' # s chưa được thay đổi
[/ python]

Hữu ích hơn, chúng tôi có thể tổng hợp danh sách trả về trực tiếp thành các biến thích hợp.

[python]
& gt; & gt; & gt; title, handle = s.split ()
& gt; & gt; & gt; tiêu đề
'Don'
& gt; & gt; & gt; xử lý
'Quijote'
[/ python]

Để người hùng Tây Ban Nha của chúng ta đến với những chiếc cối xay gió của anh ấy trong giây lát, hãy tưởng tượng rằng chúng ta có một chuỗi chứa thời gian đồng hồ tính theo giờ, phút và giây, được phân tách bằng dấu hai chấm. Trong trường hợp này, chúng tôi có thể tập hợp các phần riêng biệt một cách hợp lý thành các biến để thao tác thêm.

[python]
& gt; & gt; & gt; tim = '16: 30: 10'
& gt; & gt; & gt; hrs, phút, secs = tim.split (':')
& gt; & gt; & gt; giờ
'16'
& gt; & gt; & gt; phút
'30'
& gt; & gt; & gt; giây
'10'
[/ python]

Chúng tôi có thể chỉ muốn tách chuỗi mục tiêu một lần, bất kể dấu phân cách xảy ra bao nhiêu lần. split ()Phương thức sẽ chấp nhận tham số thứ hai chỉ định số lượng phân tách tối đa để thực hiện.

[python]
& gt; & gt; & gt; tim.split (':', 1) # split () chỉ một lần
['16', '30: 10']
[/ python]

Ở đây, chuỗi được chia trên dấu hai chấm đầu tiên và phần còn lại được giữ nguyên. Và nếu chúng ta muốn Python bắt đầu tìm kiếm các dấu phân cách từ đầu kia của chuỗi? Chà, có một phương thức biến thể được gọi là rsplit () , thực hiện điều đó.

[python]
& gt; & gt; & gt; tim.rsplit (':', 1)
['16: 30', '10']
[/ python]

Xây dựng phân vùng

Một phương thức chuỗi tương tự là partition () . Điều này cũng phân chia một chuỗi dựa trên nội dung, sự khác biệt ở chỗ kết quả là một tuple và nó giữ nguyên dấu phân cách, cùng với hai phần của chuỗi đích ở hai bên của nó. Không giống như split () , partition () luôn chỉ thực hiện một thao tác tách, bất kể dấu phân tách xuất hiện trong chuỗi đích bao nhiêu lần.

[python]
& gt; & gt; & gt; tim = '16: 30: 10'
& gt; & gt; & gt; tim.partition (':')
('16', ':', '30: 10 ')
[/ python]

Cũng như với phương thức split () , có một biến thể của partition () , rpartition () , bắt đầu tìm kiếm dấu phân cách từ đầu kia của chuỗi đích.

[python]
& gt; & gt; & gt; tim.rpartition (':')
('16: 30', ':', '10')
[/ python]

Sử dụng string.replace ()

của Python

Bây giờ, quay lại Don Quijote của chúng tôi. Trước đó, khi chúng tôi cố gắng làm đau tên anh ấy bằng cách thay đổi 'j' thành 'x' bằng cách gán trực tiếp 'x' cho s [7] , chúng tôi thấy rằng chúng tôi không thể làm được. , bởi vì bạn không thể thay đổi các chuỗi Python hiện có. Nhưng chúng ta có thể giải quyết vấn đề này bằng cách tạo một chuỗi mới theo ý thích của chúng ta, dựa trên chuỗi cũ. Phương thức chuỗi cho phép chúng tôi thực hiện việc này là Replace () .

[python]
& gt; & gt; & gt; s.replace ('j', 'x')
'Don Quixote'
& gt; & gt; & gt; s
'Don Quijote' # s chưa được thay đổi
[/ python]

Một lần nữa, chuỗi của chúng tôi không hề bị thay đổi. Điều đã xảy ra là Python chỉ đơn giản trả lại một chuỗi mới theo hướng dẫn mà chúng tôi đã đưa ra, sau đó ngay lập tức loại bỏ nó, để lại chuỗi ban đầu của chúng tôi không thay đổi. Để duy trì chuỗi mới của chúng tôi, chúng tôi cần gán nó cho một biến.

[python]
& gt; & gt; & gt; new_s = s.replace ('j', 'x')
& gt; & gt; & gt; s
'Don Quijote'
& gt; & gt; & gt; new_s
'Don Quixote'
[/ python]

Nhưng tất nhiên, thay vì giới thiệu một biến mới, chúng tôi chỉ có thể sử dụng lại biến hiện có.

[python]
& gt; & gt; & gt; s = s.replace ('j', 'x')
& gt; & gt; & gt; s
'Don Quixote'
[/ python]

Và đây, mặc dù có vẻ như chúng tôi đã thay đổi chuỗi ban đầu, nhưng trên thực tế, chúng tôi đã loại bỏ nó và lưu trữ một chuỗi mới vào vị trí của nó.

Lưu ý rằng, theo mặc định, Replace () sẽ thay thế mọi lần xuất hiện của chuỗi phụ tìm kiếm bằng chuỗi phụ mới.

[python]
& gt; & gt; & gt; s = 'Don Quijote'
& gt; & gt; & gt; s.replace ('o', 'a')
'Dan Quijate'
[/ python]

Chúng tôi có thể kiểm soát sự lãng phí này bằng cách thêm một tham số bổ sung chỉ định số lần tối đa mà chuỗi con tìm kiếm nên được thay thế.

[python]
& gt; & gt; & gt; s.replace ('o', 'a', 1)
'Dan Quijote'
[/ python]

Cuối cùng, phương thức Replace () không giới hạn ở việc hoạt động trên các ký tự đơn lẻ. Chúng tôi có thể thay thế toàn bộ đoạn của chuỗi mục tiêu bằng một số giá trị được chỉ định.

[python]
& gt; & gt; & gt; s.replace ('Qui', 'key')
'Donkey jote'
[/ python]

Để biết các tham chiếu về các phương thức chuỗi được sử dụng, hãy xem phần sau:


Xem thêm những thông tin liên quan đến chủ đề trăn cắt một chuỗi

How to TRAIN Your little LoveBird parrot | Step by step

  • Tác giả: ILiuHa BrO
  • Ngày đăng: 2020-01-07
  • Đánh giá: 4 ⭐ ( 4734 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hi, my name is ILiuHa BrO.
    In this video i want to teach you how to train you lovebird parrot.
    I love birds very much, i had a lot of parrots in my life so i know how to train them very well. Please, think twice before to buy an alive creature, it takes a lot of responsibility and care. If you love birds and want to get back the same, the lovebird parrot is the perfect choice. Hope you really enjoyed this video, please subscribe to my channel and hit the like button.
    Thank you very much for watching this video.

    Instagram : https://www.instagram.com/iliuha.bro

Cắt một chuỗi dựa trên chiều dài chuỗi

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 1985 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] s = s.substring(0, Math.min(s.length(), 10)); Sử dụng Math.minnhư thế này sẽ tránh được một ngoại lệ…

Cắt chuỗi trong C++

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 5 ⭐ ( 7538 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cắt chuỗi chuỗi trong C++. Bạn sẽ học được cách tự tạo ra chương trình cắt chuỗi chuỗi trong C++ thông qua hàm strncpy() sau bài viết này.

Kiểu dữ liệu chuỗi trong Python - Phần 2

  • Tác giả: howkteam.vn
  • Đánh giá: 4 ⭐ ( 6104 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Kiểu dữ liệu chuỗi trong Python - Phần 2

Bài phỏng vấn ông Trương Văn Cẩm - Phó Chủ tịch thường trực Hiệp hội Dệt May Việt Nam của báo Diễn đàn Doanh nghiệp về vấn đề cắt giảm chi chí để " cứu doanh nghiệp dệt may"

  • Tác giả: www.vietnamtextile.org.vn
  • Đánh giá: 3 ⭐ ( 5885 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hiệp Hội Dệt May Việt Nam VITAS

Một số hàm cắt chuỗi trong excel

  • Tác giả: aneedz.com
  • Đánh giá: 3 ⭐ ( 3062 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong excel, ngoài việc kết hợp các chuỗi riêng lẻ với nhau dựa vào hàm con-catenate, thì excel cũng trang bị cho chúng ta cách để cắt chuỗi ra thành các chuỗi nhỏ hơn.

substr: Hàm cắt một phần chuỗi trong php

  • Tác giả: unitop.com.vn
  • Đánh giá: 5 ⭐ ( 3766 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Danh Sách Việt Gian Hải Ngoại - cach tinh luong thang 13

By ads_php