[Basic Python] Chuỗi trong Python #2


Tiếp tục nói về chuỗi trong python nào…!

Ghép các chuỗi vào nhau.

Để ghép (nối) chuỗi vào với nhau trong python là cực kỳ dễ dàng. Trong python các toán tử như + hoặc * không chỉ sử dụng vs số (int) mà có thể sử dụng với các chuỗi (string). 
  • Ghép chuỗi với toán tử +, ban có thể sử dụng toán tử + để ghép 2 chuỗi hoặc nhiều chuỗi với nhau. 
  • Với toán tử * bạn có thể làm được gì? Như phép nhân bình thường, việc sử dụng toán tử * sẽ giúp bạn nhân chuỗi lên nhiều lần tuỳ ý. Nhưng bạn không thể nhân 2 chuỗi với nhau, bạn chỉ được nhân với 1 tự nhiên bất kỳ. 


Loop một chuỗi như nào? 

Trong python ta có thể duyệt qua các ký tự trong 1 chuỗi để xử lý nhiều tác dụ theo ý muốn.
Cú pháp như sau: 
for val in sequence:
# Body of for
Ví dụ như đếm xem 1 ký tự được xuất hiện bao nhiêu lần trong 1 chuỗi ta có thể xử lý như sau: 
Tiếp Theo ta sẽ viết if bên trong để đếm. 
Python sử dụng thụt đầu dòng để xác định các tầng code bạn thay vì {} như nhiều ngôn ngữ, nên như trong ảnh ở trên, khi mình print biến count ở 2 vị trí khác nhau thì ra các kết quả khác nhau, 1 cái là ở trong loop 1 cái ngoài loop . Ngoài ra trong python mặc dù bạn thấy cùng hàng nhưng nếu 1 chỗ bạn dùng dấu cách và 1 chỗ bạn dùng dấu tab thì nó vẫn coi như khác nhau, bạn cần đồng bộ về 1 kiểu. 

Một điểm thú vị là chúng ta có thể kết hợp for else. Else sử dụng khi chúng ta có 1 điều kiện if trong vòng for để tìm 1 kết quả mong muốn nào đó, nếu loop chạy xong và không có giá trị nào thoả mãn, else sẽ chạy. Ngược lại nếu có giá trị thoả mãn thì sẽ break ngay ra ngoài loopelse không được thực thi. Ví dụ sau sẽ làm rõ hơn: 


Kiểm tra 1 ký tự hoặc chuỗi ký tự có xuất hiện trong một chuỗi khác không với 'in' và 'not in'

Trong công việc, tôi nghĩ thường xuyên chúng ta cần ktra 1 giá trị nào đó trong 1 chuỗi, mảng có xuất hiện không? 
Ta sử dụng keyword `in` trong python để kiểm tra rất đơn giản như sau: 
Như hình trên, các bạn cần viết đúng chữ hoa và chữ thường, ngoài `in` các bạn cũng có thể dùng `not in` khi muốn trả về kết quả mong muốn. 
Kết quả trả về sẽ là true hoặc false.


Enumerate() function

Tôi muốn viết một loạt bài khác về các hàm trong python, nhưng vì hàm này thường xuyên được xử dụng khi làm việc với chuỗi nên mình sẽ giới thiệu cho các bạn luôn.
Enumerate() function sẽ trả về cho bạn các đối tượng được liệt kê, nó chứa indexvalue của các ký tự trong chuỗi bạn truyền vào theo dạng cặp. 
Ví dụ sau sẽ giúp bạn hiểu rõ, trong khi làm việc với enumerate() bạn cần kết hợp với list() để nó hiển thị ra: 


Định dạng chuỗi trong Python.

Ở phần trước mình đã có nói qua về việc làm thế nào tạo 1 chuỗi và nếu chuỗi có dấu nháy đơn hoặc kép lặp lại gây lỗi thì làm sao để giải quyết. Các bạn có thể xem lại ở link dưới: 
http://blog.scuti.asia/2018/04/basic-python-chuoi-trong-python-1.html
Bài này mình sẽ hướng dẫn bạn chi tiết hơn, nhiều phương pháp để định dạng chuỗi và tránh các SyntaxError với Escape Sequence. Escape Sequence là một kí tự đặc biệt trong Python
Ở bài trước ta đã xử lý được những chuỗi như sau: 
“I'm working on Scuti company” or ‘I am Loc, I am woking on “Scuti Company”’
Vậy với chuỗi như sau bạn sẽ giải quyết như nào?
"I'm Loc, I'm working on "Scuti""

Không thể giải quyết bài toán này bằng phương pháp cũ vì chuỗi đã trở nên phức tạp hơn, tôi sẽ cung cấp cho bạn phương pháp xử lý rất đơn giản. Có rất nhiều cách để xử lý, bạn có thể dựa trên dấu ngoặc bên trong hoặc đơn giản là thêm \ vào trước dấu nháy cần xử lý. Xem hình bạn sẽ hiểu rõ hơn: 
Các dấu nháy đơn hoặc kép thì ta xử lý được rồi, làm thế nào giải quyết được vấn đề khi trong đoạn văn có dấu \ muốn hiện lên, ví dụ như đường dẫn thư mục sau: 
C:\Download\XxX\nextExample.mp4
Như hình bạn sẽ thấy rằng, ký tự \n sẽ ngắt chuỗi đó làm 2 dòng. Dù bạn nháy ntn đi nữa cũng sẽ không thể loại tác dụng của \n. Vì vậy ta sẽ có phương pháp lấy độc trị độc như sau: 
  • Thêm \ vào trước dấu \
  • thêm r trước chuỗi string 
Ngoài ra còn rất nhiều Escape Sequence khác, các bạn có thể xem hình dưới để rõ hơn: 


Phương thức Format() trong định dạng String của Python

Phương thức format() cho chuỗi rất linh hoạt và mạnh mẽ. Phương thức format() chứa dấu ngoặc nhọn {} làm phần giữ chỗ hoặc trường để thay thế.
Có nhiều cách để xác định vị trí muốn thay thế giá trị, mình sẽ cho các bạn thấy rõ hơn từ ví dụ: 

- Kiểu mặc định: 
  • Các bạn xử dụng dấu {} và phần đuôi .format() để sử dụng, ví dụ:

  • Tiếp theo các bạn có thể sử dụng đối số với giá trị trong {} là vị trí index trong .format(), Ví dụ: 

  • Ngoài ra bạn có thể sử dụng thẳng biến số hay còn gọi là keyword. 


Các phương thức cơ bản khác làm việc với string của Python

Có rất nhiều phương thức có sẵn với đối tượng chuỗi. Phương thức .format() mà chúng ta đã đề cập ở trên là một trong số chúng.
Còn rất rất nhiều, có lẽ trong bài tiếp theo tôi sẽ nói chi tiết hơn về từng loại, trong phần này sẽ giới thiệu sơ lược các phương thức phổ biến trước. Một số phương thức phổ biến như sau: .lower(), .upper(), ''.join(), .split(), .find(), .replace(), …
  • Phương thức .lower(), .upper() là phương thức này giúp thay đổi kiểu chữ hoachữ thường, chỉ đơn giản với việc gọi phương thức đó sau mỗi chuỗi ta sẽ có kết quả như sau:
  • Phương thức ‘ ’.join(), phương thức này giúp ta ghép các chuỗi trong 1 mảng vào thành 1 chuỗi, .join() dùng khác với các phương thức khác, join sẽ ở đầu và chuỗi sẽ được đặt trong ().
  • Phương thức .split(), phương thức này giúp ta tách 1 chuỗi cách nhau bởi dấu space ra thành nhiều chuỗi trong mảng, đây là phương thức ngược lại với join(), join() khắc nhập, split() khắc xuất
  • Phương thức .find() sẽ giúp bạn tìm được đúng vị trí index của 1 ký tự nào đó bạn muốn, nó sẽ trả về kết quả vị trí đầu tiên của chữ đó trong chuỗi:
  • Phương thức .replace(), đơn giản là giúp chúng ta thay thế 1 chuỗi nào đó bằng 1 chuỗi khác. 


OK! Hẹn các bạn phần tiếp theo mình sẽ giới thiệu chi tiết hơn về các phương thức của python nhé. 

If you liked this article

Let's subscribe the updates of Scuti!
Share on Google Plus

About Nguyễn Đức Lộc

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 Comments:

Post a Comment