Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 4: Chuỗi trong Python

Tất cả các ngôn ngữ lập trình đều có kiểu dữ liệu là kiểu chuỗi, và trong Python nó cũng không ngoại lệ. Bài này mình sẽ cùng mọi người tìm hiểu xem chuỗi trong Python có ưu điểm gì hơn các ngôn ngữ khác không nhé.

1, Các ký tự đặc biệt trong chuỗi.

Để sử dụng các ký tự đặc biệt trong Python khi in ra dữ liệu thì mọi người sử dụng ký tự \ trước nó.

VD: Khi bạn muốn in ra "  mà bạn lại sử dụng  "" để chứa nội dung int ra chuỗi.

print("Website \"Toidicode.com\" ")
#Website "Toidicode.com"

Tương tự chúng ta có thể làm với '.

print('Website \'Toidicode.com\' ')
#Website 'Toidicode.com'

Các ký tự đặc biệt khác:

  • \n ngắt xuống dòng và bắt đầu dòng mời.
  • \t đẩy nội dung phía sau nó cách 1 tab.
  • \a chuông cảnh báo.
  • \b xóa bỏ khoảng trắng phía trước nó.
  • Ngoài ra bạn cũng có thể sử dụng để in ra các ký tự đặc biệt khác bằng việc sử dụng theo cú pháp \xnn, với n là 0->9, hoặc a->f hoặc A->F.

VD:

print("Website \t Toidicode.com")
#Website          Toidicode.com

2, Fomat chuỗi.

Ngoài những cách in ra dữ liệu ở trên thì mọi người cũng có thể sử dụng các keyword định dạng cho kiểu giá trị và binding nó vào chuỗi. Sử dụng với cú pháp:

print("%type" %(binding))

Trong đó:

  • type là các kiểu dữ liệu các bạn muốn binding và thay thế vào vị trí đó.
  • binding là giá trị mà các bạn muốn binding vào vị trí được xác định trong chuỗi.

Type là các kiểu sau:

Cú pháp fomat Mô tả
%c character
%s chuỗi
%i số nguyên
%d số nguyên
%u số nguyên
%o bát phân
%x thập lục phân (in thường)
%X thập lục phân (in hoa)
%e số mũ  (với e thường)
%E số mũ  (với e hoa)
%f số thực
%g dạng rút gọn của %f and %e
%G dạng rút gọn của %f and %E

VD: Mình sẽ thực hiện binding 1 chuỗi vào trong 1 chuỗi.

guy = "Ban"
full = "Chao mung %s den voi website toidicode.com" %(guy)
print(full)
# Chao mung Ban den voi website toidicode.com

Trong đó nếu như bạn muốn binding nhiều chuỗi vào trong chuỗi thì mỗi giá trị bạn muốn binding cách nhau bởi 1 dấu ,

VD:

guy = "Ban"
doamin = "toidicode.com"
full = "Chao mung %s den voi website %s" %(guy, doamin)
print(full)
# Chao mung Ban den voi website toidicode.com

3, Truy cập tới từng giá trị của chuỗi.

Chuỗi trong Python được lưu trữ vào trong các ô nhớ với mỗi ô nhớ tương đương với một ký tự đơn (khác với các ngôn ngữ khác) và các ký tự này được xếp liên tiếp với nhau. Do đó kiểu dữ liệu chuỗi trong Python có thể được truy xuất đến từng ký tự trong nó (các ngôn ngữ khác không có, PHP7.1.X mới hỗ trợ ở đây là reverse index string).

Để truy cập đến từng ký tự bên trong chuỗi, các bạn sử dụng cú pháp sau:

stringName[index]

Trong đó:

  • stringName là tên của biến chứa chuỗi, hoặc chuỗi.
  • index là vị trí của ký tự bạn muốn lấy ra. Index này hỗ trợ chúng ta truy xuất được cả 2 chiều của chuỗi nếu:
    • Tính từ đầu thì nó bắt đầu từ 0.
    • Tính từ cuối thì nó bắt đầu từ -1.

Để cho dễ hiểu thì bạn có thể xem hình sau:

string index trong python

VD

name = "Vu Thanh Tai"
print(name[0]) # V
print(name[-1]) # i

Nếu trong trường hợp các bạn muốn lấy nội dung của một đoạn chuỗi trong chuỗi đó thì có thể sử dụng cú pháp sau:

stringName[start:end]

Trong đó:

  • stringName là tên của biến chứa chuỗi, hoặc chuỗi.
  • start là vị trí của ký tự bắt đầu lấy, nếu để trống start thì nó sẽ lấy từ 0.
  • end là vị trí kết thúc (nó sẽ lấy trong khoảng từ start đến < end), nếu để trống end thì nó sẽ lấy đến hết chuỗi.

VD:

name = "Vu Thanh Tai"

print(name[0:2]) # Vu

print(name[-3:12]) # Tai

print(name[9:]) # Tai

print(name[-3:]) # Tai

4, Lời kết.

Chuỗi trong Python được hỗ trợ rất mạnh, và phần này cũng rất quan trọng nên mọi người chú ý giúp mình.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

15 Comments

Chào Tài !

trong bài viết có phần 

Do đó kiểu dữ liệu chuỗi trong Python có thể được truy xuất đến từng ký tự trong nó (các ngôn ngữ khác không có, PHP7 mới hỗ trợ).

Mình không biết có sự nhầm lẩn ở đây không, Vì trước giờ giờ code php mình vẫn dùng index của string, và đã thử đoạn code dưới cả php 5.6 và 7.0 đều chạy được

$a = 'abcd';

echo $a[1];

Còn java thì mình không biết, nhưng nhớ không lầm thì bạn mình có demo thuật toán cho mình thì vẫn lấy phần tử theo index được

Nên nhờ Tài xem lại rồi giải đáp thắc mắc giúp mình

Cám ơn !

Hỏi Liều

7 năm trước

Haha, Mình viết thiếu đó bạn ạ, ý mình đang nói ở đây là index ngược của chuỗi cơ :D.
VD:

$str = 'abc';
echo $str[-1];
//out: c

 

Vũ Thanh Tài

7 năm trước

Cám ơn b :v
làm bối rối, tưởng đâu mình hiểu sai về php :3

Hỏi Liều

7 năm trước

:D

Vũ Thanh Tài

7 năm trước

Phần 3 khó hiểu -_-

Mới học Python

7 năm trước

Đoạn code này 

print(name[-3:12]) # Tai

Phải là 

print(name[-3:12]) # TaiVu Thanh Tai

chứ nhỉ hay mình hiểu sai nè mong giải thích giùm

Hung

6 năm trước

Mình thấy #Tai là đúng.

Thiết nghĩ với những ví dụ ntn thì bạn nên chạy thử xem ra gì đã, nếu thực sự khác (do khác version chẳng hạn) thì hãy hỏi. Chứ chỉ đọc không rồi suy theo ý mình thì không hẳn là cách hay.

(vui)

Hai

5 năm trước

Hiểu nôm na là python đọc đoạn này kiểu 2 chiều vậy.
Mình newbie, hiểu được là vậy. Không thì bạn đổi lại start và end là nó vẫn là như thế thôi.
Thân.

Vũ trung sơn

3 năm trước

Phần 3 nếu ai học kĩ  pascal để thi HSG thì sẽ dễ dàng hiểu phần này, cái này vui vãi chưởng: năm trước cháu ôn bài chán quá thử code trang web chỉ 4 site (nó chạy giống web nhưng đâu phải web :) phải nạp giá trị từng kí tự ( 24 * 80 màn output của pascal) cảm giác như tạo ra cái máy tính thời năm 1 9 hòi đó ấy :)

Sun Fusion

5 năm trước

bạn có thể nói kĩ hơn về \b và \a ví dụ như đưa ra ví dụ dc ko ạ

UFO

5 năm trước

\a là tạo 1 kí tự đặc biệt
\b là xóa 1 khoảng trắng (space) trước đó
bạn test đi sẽ rõ hơn, dễ lắm

Dat Nguyen

2 năm trước

hay quá

dang

3 năm trước

hay

mon

3 năm trước

Tại sao chưa có bài việc về Input, int, bool, float, hướng đối tượng(object),.. vậy ?

QT

1 năm trước

Tại sao chưa có bài việc về Input, int, bool, float, hướng đối tượng(object),.. vậy ?

QT

1 năm trước

Bình luận

Captcha