Python-chuỗi kí tự

Trong phần này của hướng dẫn lập trình Python, chúng ta tìm hiểu chuỗi kí tự chi tiết hơn.

Chuỗi kí tự

Chuỗi kí tự trong Python là một chuỗi các ký tự. Chuỗi là bất biến. Điều này có nghĩa là khi bạn định nghĩa 1 chuỗi kí tự, chúng sẽ không thể thay đổi được. Nhiều phương thức Python, chẳng hạn như replace(), join() hoặc split() sửa đổi các chuỗi. Tuy nhiên, các hàm không sửa đổi chuỗi kí tự ban đầu. Các hàm này chỉ tạo một bản sao của một chuỗi và trả về chuỗi bản sao đó.

Các kí tự trong chuỗi kí tự

Chuỗi Python có thể được tạo bằng dấu ngoặc kép, dấu ngoặc kép hoặc dấu ngoặc kép. Khi chúng ta sử dụng dấu ngoặc kép, các chuỗi có thể kéo dài nhiều dòng mà không cần sử dụng ký tự xuống dòng.
string_literals.py

# string_literals.py

a = "proximity alert"
b = 'evacuation'
c = """
requiem 
for
a 
tower
"""

print(a)
print(b)
print(c)

Chúng ta gán ba ký tự chuỗi cho các biến a, b và c. Và chúng tôi in chúng ra màn hình console

C:\Programs\Python\Python37>python.exe string_literals.py
proximity alert
evacuation

requiem
for
a
tower

Unicode

Để tạo unicode string, add thêm u hoặc U vào đầu mỗi string như ví dụ sau:
unicode.py

text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430'

print(text)

Kết quả in ra chuỗi tiếng Nga

C:\Programs\Python\Python37>python.exe test.py
Лев Николаевич Толстой:
Анна Каренина

Ngoài ra, chúng ta có thể sử dụng kí tự tiếng Nga luôn khi define string.
unicode2.py

text = 'Лев Николаевич Толстой: Анна Каренина'

print(text)

Kết quả script unicode2.py là

C:\Programs\Python\Python37>python.exe test.py
Лев Николаевич Толстой: Анна Каренина

Quote

String trong Python được phân cách bằng các kí tự nháy đơn hoặc nháy kép. Điều gì sẽ xảy ra nếu chúng ta muốn hiển thị dấu ngoặc kép, chẳng hạn như để trích dẫn câu nói, bài phát biểu. Có hai cách cơ bản để làm điều này.
quotes.py

print("There are many stars.")
print("He said, \"Which one is your favourite?\"")

print('There are many stars.')
print('He said, "Which one is your favourite?"')

Chúng ta sử dụng kí tự \” để thêm kí tự ” vào string. Kết quả script quotes.py

C:\Programs\Python\Python37>python.exe test.py
There are many stars.
He said, "Which one is your favourite?"
There are many stars.
He said, "Which one is your favourite?"

Chiều dài string

Hàm len() đếm số lượng kí tự string, bao gồm cả kí tự space.
string_length.py

s1 = "Eagle"
s2 = "Eagle\n"
s3 = "Eagle  "

print(len(s1))
print(len(s2))
print(len(s3))

Ví dụ tính chiều dài của string s1,s2,s3

s1 = "Eagle"
s2 = "Eagle\n"
s3 = "Eagle  "

Define 3 string. String s2 chứa kí tự xuống dòng \n. String s3 chứa kí tự space.

print(len(s1))

Sử dụng hàm len() có sẵn trong Python để đo chiều dài string.

C:\Programs\Python\Python37>python.exe test.py
5
6
7

Từ kết quả chúng ta có thể thấy hàm len() đếm cả kí tự đặc biệt như xuống dòng, kí tự space.

Hàm loại bỏ kí tự trắng

Trong xử lý string, chúng ta thường kết thúc chuỗi với kí tự space ở đầu hoặc cuối string. Space được biết đến như kí tự xuống dòng, tab, space hoặc kí tự điều khiển. Chúng ta có hàm strip(), lstrip() và rstrip() để xóa các kí tự này.
stripping.py

s = " Eagle  "

s2 = s.rstrip()
s3 = s.lstrip()
s4 = s.strip()

print('{0} {1}'.format(s, len(s)))
print('{0} {1}'.format(s2, len(s2)))
print('{0} {1}'.format(s3, len(s3)))
print('{0} {1}'.format(s4, len(s4)))

Ví dụ này, chúng ta gọi hàm để loại bỏ kí tự space.

s2 = s.rstrip()

Hàm rstrip() loại bỏ tất cả kí tự ở đuôi string

s3 = s.lstrip()

Hàm lstrip() loại bỏ tất cả kí tự space ở đầu string

s4 = s.strip()

Hàm strip() loại bỏ tất cả kí tự space ở đầu và đuôi string

print('{0} {1}'.format(s2, len(s2)))

Hàm format() được sử dụng để build string theo 1 format riêng. {0} là kí tự điều khiển tham chiếu tới tham số đầu tiên hàm format(), {1} tham chiều tới tham số thứ 2.

C:\Programs\Python\Python37>python.exe test.py
 Eagle   8
 Eagle 6
Eagle   7
Eagle 5

Đây là kết quả script stripping.py

Kí tự đặc biệt

Chúng ta có thể sử dụng kí tự đặc biệt như: xuống dòng, tab,… trong string python cho từng mục đích riêng.

strophe.py

print("Incompatible, it don't matter though\n'cos someone's bound to hear my cry")
print("Speak out if you do\nYou're not easy to find")

Kí tự xuống dòng \n được dùng trong ví dụ này

C:\Users\vietvh3\AppData\Local\Programs\Python\Python37>python.exe C:\Users\vietvh3\Desktop\test.py
Incompatible, it don't matter though
'cos someone's bound to hear my cry
Speak out if you do
You're not easy to find

Tiếp theo, chúng ta tìm hiểu kí tự backspace

print("Python\b\b\booo") # prints Pytooo

String trong ví dụ này có 3 kí tự \b. Kí tự backspace lùi và xóa kí tự trước nó. Kết quả chúng ta được string “Pytooo”

print("Towering\tinferno") # prints Towering        inferno

Kí tự tab \t thêm 8 space vào string

Nếu chúng ta thêm kí tự r vào đầu string, chúng ta nhận được raw string, trong đó các kí tự điều khiển không được thông dịch.

print(r"Another world\n")

Kết quả chúng ta thu được string có kí tự xuống dòng \n

Another world\n

So sanh string

Để so sánh 2 string, chúng ta dùng toán tử bằng == hoặc toán tử khác != . Toán tử trả về True hoặc False


print("12" == "12")
print("17" == "9")
print("aa" == "ab")

print("abc" != "bce")
print("efg" != "efg")

Trong ví dụ này, chúng ta so sánh 1 vài string.

print("12" == "12")

2 string này giống nhau, trả về True

print("17" == "9")

2 string này khác nhau, trả về False

print("aa" == "ab")

2 string khác nhau, trả về False

print("abc" != "bce")

2 string khác nhau, toán tử khác trả về True

print("efg" != "efg")

2 string giống nhau, toán tử khác trả về False

Kết quả:

C:\Programs\Python\Python37>python.exe test.py
True
False
False
True
False

Truy xuất phần tử string

string_elements.py

# string_elements.py

s = "Eagle"

print(s[0])
print(s[4])
print(s[-1])
print(s[-2])

print("****************")

print(s[0:4])
print(s[1:3])
print(s[:])

Để lấy phần tử trong string python, chúng ta sử dụng index

print(s[0])
print(s[4])

Dòng đầu in ra kí tự đầu tiên. Lệnh print thứ 2 in ra kí tự thứ 5.

print(s[-1])
print(s[-2])

Khi index < 0, chúng ta lấy các phần tử từ cuối string. Trong ví dụ này, s[-1] trả về kí tự ‘e’, s[-2] trả về kí tự ‘l’

print(s[0:4])

In ra các kí tự 5 kí tự index từ 0->4

print(s[:])

In ra tất cả các kí tự trong string
Kết quả:

C:\Programs\Python\Python37>python.exe test.py
E
e
e
l
****************
Eagl
ag
Eagle

Chúng ta có thể dùng vòng lặp for để duyệt qua các phần tử trong string
traverse.py


# traverse.py

s = "Vncoding"

for i in s:
  print(i, " ", end="")

In tất cả các kí tự string s

C:\Programs\Python\Python37>python.exe traverse.py
V  n  c  o  d  i  n  g

Tìm substring

Hàm find(), rfind(), index() và rindex() được sử dụng để tìm substring trong 1 string. Các hàm này trả về index xuất hiện đầu tiên của substring trong string. Hàm find() và index() tìm kiếm từ điểm bắt đầu của string. Hàm rfind() và rindex() tìm kiếm bắt đầu từ cuối string.

Sự khác nhau giữa hàm find() và index() là khi không tìm thấy substring,
The difference between the find() and index() methods is that when the substring is not found, the former returns -1. The latter raises ValueError exception.

Be the first to comment

Leave a Reply