openplanning

Hướng dẫn và ví dụ String trong Python

  1. Python String
  2. Truy cập các giá trị trong string
  3. String là bất biến (immuable)
  4. Các ký tự thoát (Escape Characters)
  5. Các toán tử cho string
  6. Các phương thức

1. Python String

Chuỗi (string) là một kiểu (type) thông dụng nhất trong Python, và bạn thường xuyên phải làm việc với chúng. Chú ý rằng trong Python không có kiểu ký tự (character), ký tự đơn giản được coi là một string có độ dài 1.
Có 2 cách để khai báo một string viết trên 1 dòng (line), đó là sử dụng dấu nháy đơn hoặc dấu nháy kép.
str1 = "Hello Python"
str2 = 'Hello Python'

str3 = "I'm from Vietnam"

str4 = 'This is a "Cat"! '
Nếu bạn muốn viết string trên nhiều dòng, sử dụng cặp 3 dấu nháy đơn.
str = """Hello World
     Hello Python"""

2. Truy cập các giá trị trong string

Python không hỗ trợ kiểu ký tự (Character type), ký tự được coi là một string với độ dài 1. Các ký tự trong string được đánh chỉ số bắt đầu từ 0. Bạn có thể truy cập vào các chuỗi con (substring) thông qua chỉ số.
stringExample.py
mystr = "This is text"

# --> h
print ("mystr[1] = ", mystr[1])

# --> is is t
print ("mystr[2,9] = ", mystr[2:9])

# --> s is text
print ("mystr[3:] = ", mystr[3:])

3. String là bất biến (immuable)

String là kiểu dữ liệu đặc biệt trong Python, và nó là bất biến (immuable). Mỗi string được có một địa chỉ lưu trữ trên bộ nhớ (memory). Tất cả các thao tác với string đều tạo ra một đối tượng khác. Chẳng hạn như việc bạn muốn nối (concatenate) một string vào một string khác, hành động này tạo ra một string khác trên bộ nhớ.
Toán tử == và is
Python sử dụng toán tử == để so sánh giá trị của 2 đối tượng. Và sử dụng toán tử "is" để so sánh vị trí trên bộ nhớ (Memory).
compareObject.py
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    # Ghi đè phương thức __eq__
    def __eq__(self, other):
        return self.name == other.name and self.age == other.age

jack1 = Person('Jack', 23)
jack2 = Person('Jack', 23)

# Gọi tới phương thức __eq__
print ("jack1 == jack2 ?", jack1 == jack2) # True
print ("jack1 is jack2 ?", jack1 is jack2) # False
Xem thêm:
  • So sánh và sắp xếp trong Python
String là kiểu dữ liệu đặc biệt và sử dụng thường xuyên trong ứng dụng Python. Và vì vậy nó có một số đặc điểm sau:
  • Nếu bạn khai báo 2 biến kiểu string có giá trị như nhau, chúng sẽ cùng trỏ đến một string thực sự trên bộ nhớ (memory).
Các toán tử với string sẽ tạo ra string mới trên bộ nhớ (memory).
compareString.py
str1 = "Hello Python"
str2 = "Hello Python"
str3 = "Hello " + "Python"

print ("str1 == str2? ", str1 == str2) # --> True 
print ("str1 is str2? ", str1 is str2) # --> True  
print ("str1 == str3? ", str1  == str3) # --> True 
print ("str1 is str3? ", str1 is str3) # --> False

4. Các ký tự thoát (Escape Characters)

Các ký tự thoát (Escape characters) là các ký tự đặc biệt trong Python. Nó là các ký tự không thể in ấn (non-printable). Tuy nhiên bạn muốn nó xuất hiện trong string của bạn. Bạn cần một ký hiệu để thông báo với Python. Chẳng hạn "\n" là ký tự xuống dòng (newline).
escapeCharacterExample.py
# Hai ký tự TAB ngăn cách giữa "Hello World" và "Hello Python".
mystr = "Hello World\t\tHello Python" 

print (mystr) 
# Hai ký tự xuống dòng ngăn cách giữa "Hello World" và "Hello Python".
mystr = "Hello World\n\nHello Python" 
print (mystr)
Output:
Hello World       Hello Python
Hello World

Hello Python
Ký hiệu với dấu xoẹt
Mã trong hệ cơ số 16
Mô tả
\a
0x07
Bell or alert
\b
0x08
Backspace
\cx
Control-x
\C-x
Control-x
\e
0x1b
Escape
\f
0x0c
Formfeed
\M-\C-x
Meta-Control-x
\n
0x0a
Newline
\nnn
Octal notation, where n is in the range 0.7
\r
0x0d
Carriage return
\s
0x20
Space
\t
0x09
Tab
\v
0x0b
Vertical tab
\x
Character x
\xnn
Hexadecimal notation, where n is in the range 0.9, a.f, or A.F

5. Các toán tử cho string

Trong Python, có một số toán tử đặc biệt dưới đây:
Toán tử
Mô tả
Ví dụ
+
Nối (concatenate) 2 string, tạo thành một string mới.
"Hello" +"Python" ==> "Hello Python"
*
Tạo một string mới bằng cách nối (concatenate) nhiều lần bản copy của cùng môt string.
"Hello"*2 ==> "HelloHello"
[]
Trả về ký tự tại vị trí cho bởi chỉ số.
a = "Hello"
a[1] ==> "e"
[ : ]
Trả về một chuỗi con chứa các ký tự cho bởi phạm vi (range)
a = "Hello"
a[1:4] ==> "ell"
a[1: ] ==> "ello"
in
Trả về True nếu ký tự tồn tại trong string đã cho.
a = "Hello"
'H' in a ==> True
not in
Trả về True nếu ký tự không tồn tại trong string đã cho.
a = "Hello"
'M' not in a ==> True
r/R
Chuỗi thô (Raw String) - Ngăn chặn ý nghĩa thực tế của các ký tự thoát (Escape character). Cú pháp cho chuỗi thô giống hệt với chuỗi thông thường ngoại trừ "toán tử chuỗi thô", chữ "r" đứng trước dấu ngoặc kép. "R" có thể là chữ thường (r) hoặc chữ hoa (R) và phải được đặt ngay trước dấu trích dẫn đầu tiên.
print (r'\n\t') ==> \n\t
print (R'\n\t') ==> \n\t
%
Định dạng string
Xem tại phần dưới.

6. Các phương thức

  • TODO