Str Python là gì

Từ kết quả đầu ra của đoạn chương trình ví dụ trên, chúng ta có thể thấy được rằng nếu chúng ta sử dụng hàm repr[] để in ra chuỗi, thì chuỗi được in ra sẽ được bao bọc trong một cặp dấu nháy đơn [‘ ‘], và nếu chúng ta sử dụng hàm repr[] để tính toán một giá trị cụ thể, thì ta sẽ thu được kết quả có độ chính xác cao hơn so với khi sử dụng hàm str[].

Có thể liệt kê các điểm khác biệt giữa hàm str[] và hàm repr[] là:

– str[] được sử dụng để tạo ra dữ liệu đầu ra dành cho người dùng cuối, trong khi hàm repr[] được sử dụng chủ yếu cho việc debugging và phát triển phần mềm. Mục tiêu của hàm repr[] là không rõ ràng, còn mục tiêu của hàm str[] là cho ra một kết quả có thể đọc được, Ví dụ, nếu chúng ta nghi ngờ một số kiểu float đang tiềm tàng một lỗi nhỏ về việc làm tròn, thì hàm repr[] sẽ cho chúng ta thấy được lỗi này có xảy ra hay không, trong khi hàm str[] có thể sẽ không làm được điều đó.

– Hàm repr[] sẽ tính toán dạng thức kiểu string “chính thức” của một đối tượng [một dạng thức mà chứa tất cả các thông tin về đối tượng], còn hàm str[] thì được sử dụng để tính toán dạng thức kiểu string “không chính thức” của một đối tượng [một dạng thức hữu dụng khi cần in ra đối tượng].

– Câu lệnh print và hàm str[] được tích hợp sẵn trong Python sử dụng __str__ để hiển thị dạng biểu diễn theo kiểu string của đối tượng, trong khi hàm repr[] sẽ sử dụng __repr__ để hiển thị đối tượng.

Để có thể hiểu được những điều trên, chúng ta cùng theo dõi ví dụ sau:

import datetime 
today = datetime.datetime.now[] 
  
# Prints readable format for date-time object 
print str[today] 
  
# prints the official format of date-time object 
print repr[today] 

Kết quả in ra là:

2016-02-22 19:32:04.078030
datetime.datetime[2016, 2, 22, 19, 32, 4, 78030]

Hàm str[] hiển thị thông tin “date” của hôm nay theo một cách mà người dùng có thể hiển được cả ngày và giờ hiện tại là bao nhiêu.

Hàm repr[] sẽ in ra dạng biểu diễn “chính thức” của một date-time object [đối tượng ngày-giờ] [nghĩa là bằng việc sử dụng dạng biểu diễn theo kiểu string “chính thức”, chúng ta có thể reconstruct – tái cấu trúc đối tượng].

3. Làm thế nào để sử dụng chúng bên trong các class do người dùng tự định nghĩa?

Một class do người dùng tự định nghĩa cũng nên có một hàm __repr__ nếu chúng ta muốn có được các thông tin cụ thể nhằm phục vụ cho việc debugging. Và nếu bạn nghĩ rằng việc có được một phiên bản thông tin biểu diễn theo kiểu string sẽ hữu dụng cho người dùng, thì chúng ta nên tạo ra một hàm __str__ nữa.

Dưới đây là đoạn chương trình Python mô tả cách viết hàm__repr__ và hàm __str__ cho một class do người dùng tự định nghĩa.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: //www.facebook.com/cafedevn
#Group: //www.facebook.com/groups/cafedev.vn/
#Instagram: //instagram.com/cafedevn
#Twitter: //twitter.com/CafedeVn
#Linkedin: //www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: //www.pinterest.com/cafedevvn/
#YouTube: //www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# Python program to demonstrate writing of __repr__ and 
# __str__ for user defined classes 
  
# A user defined class to represent Complex numbers 
class Complex: 
  
    # Constructor 
    def __init__[self, real, imag]: 
       self.real = real 
       self.imag = imag 
  
    # For call to repr[]. Prints object's information 
    def __repr__[self]: 
       return 'Rational[%s, %s]' % [self.real, self.imag]     
  
    # For call to str[]. Prints readable form 
    def __str__[self]: 
       return '%s + i%s' % [self.real, self.imag]     
  
  
# Driver program to test above 
t = Complex[10, 20] 
  
print str[t]  # Same as "print t" 
print repr[t] 

Kết quả in ra là:

10 + i20
Rational[10, 20]

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.
  • Các series tự học lập trình khác

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

String là một trong các kiểu phổ biến nhất trong Python. String trong Python là immutable. Chúng ta có thể tạo các chuỗi bằng cách bao một text trong một trích dẫn đơn hoặc trích dẫn kép. Python coi các lệnh trích dẫn đơn và kép là như nhau. Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

Truy cập các giá trị trong String

Python không hỗ trợ một kiểu chữ cái; chúng được coi như các chuỗi có độ dài là 1. Trong Python, String được lưu giữ dưới dạng các ký tự đơn trong vị trí ô nhớ liên tiếp nhau. Lợi thế của sử dụng String là nó có thể được truy cập từ cả hai hướng [tiến về trước forward hoặc ngược về sau backward].

Việc lập chỉ mục của cả hai hướng đều được cung cấp bởi sử dụng String trong Python:

  • Chỉ mục với hướng forward bắt đầu với 0,1,2,3,…
  • Chỉ mục với hướng backward bắt đầu với -1,-2,-3,…

Để truy cập các giá trị trong String, bạn sử dụng các dấu ngoặc vuông có chỉ mục ở bên trong. Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

Khi code trên được thực thi sẽ cho kết quả:

var1[0]:  H
var2[1:5]:  ytho

Cập nhật String trong Python

Bạn có thể cập nhật một chuỗi đang tồn tại bằng cách gán [hoặc tái gán] một biến cho string khác. Giá trị mới có thể liên quan hoặc khác hoàn toàn giá trị trước đó. Ví dụ:

var1 = 'Hello World!'

print "Chuoi hien tai la :- ", var1[:6] + 'Python'

Khi code trên được thực thi sẽ cho kết quả:

Chuoi hien tai la :-  Hello Python

Các ký tự thoát trong Python

Bảng dưới đây liệt kê danh sách các ký tự thoát hoặc không thể in được mà có thể được biểu diễn với dấu \.

Ký tự thoátBiểu diễn trong hệ 16Miêu tả\a0x07Bell hoặc alert\b0x08Backspace\cxControl-x\C-xControl-x\e0x1bEscape\f0x0cFormfeed\M-\C-xMeta-Control-x\n0x0aNewline\nnnNotation trong hệ cơ số 8, ở đây n là trong dãy từ 0 tới 7\r0x0dCarriage return\s0x20Space\t0x09Tab\v0x0bTab dọc\xKý tự x\xnnNotation trong hệ thập lục phân, ở đây n là trong dãy từ 0.9, a.f, hoặc A.F

Các toán tử để thao tác với String trong Python

Có ba kiểu toán tử được hỗ trợ bởi String, đó là:

  • Toán tử cơ bản
  • Toán tử membership
  • Toán tử quan hệ

Các toán tử cơ bản để thao tác với String

Có hai loại toán tử cơ bản có thể được sử dụng với String, đó là toán tử nối chuỗi + và toán tử lặp chuỗi *.

Toán tử nối chuỗi + được sử dụng để nối hai chuỗi với nhau và tạo nên một chuỗi mới. Ví dụ:

>>> "hoang" + "nam"

Sẽ cho kết quả là:

'hoangnam'
>>>

Chú ý: Cả hai toán hạng được truyền cho phép nối chuỗi này phải cùng kiểu, nếu không sẽ tạo một lỗi. Ví dụ:

'abc' + 3
>>>

Sẽ tạo ra một lỗi là:

Traceback [most recent call last]:
  File "", line 1, in 
    'abc' + 3
TypeError: cannot concatenate 'str' and 'int' objects
>>>

Toán tử lặp chuỗi * sử dụng hai tham số. Một tham số là giá trị nguyên và tham số khác là chuỗi. Toán tử lặp chuỗi này được sử dụng để lặp đi lặp lại một chuỗi một số lần nào đó. Ví dụ:

>>> 5*"Hoang"

Sẽ cho kết quả là:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
0

Ghi chú: Bạn có thể sử dụng toán tử lặp chuỗi * này theo bất kỳ cách nào như int * string hoặc string * int. Cả hai tham số được truyền cho toán tử này phải không trong cùng một kiểu.

Các toán tử membership để thao tác với String

Toán tử in: trả về true nếu một ký tự là có mặt trong chuỗi đã cho, nếu không nó trả về false.

Toán tử not in: trả về true nếu một ký tự là không tồn tại trong chuỗi đã cho, nếu không nó trả về false.

Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
1

Các toán tử quan hệ để thao tác với String

Tất cả các toán tử quan hệ [như , =, ==, !=, ] cũng có thể áp dụng cho các String. Các chuỗi được so sánh dựa trên giá trị ASCII hoặc Unicode. Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
2

Giải thích: Giá trị ASCII của a là 97, b là 98 và c là 99, … Giá trị ASCII của A là 65, B là 66, của C là 67, … Sự so sánh giữa các chuỗi được thực hiện dựa trên giá trị ASCII.

Dấu chia chuỗi [] trong Python

Có nhiều cách để chia một chuỗi. Khi chuỗi có thể được truy cập hoặc được lập chỉ mục từ cả hai hướng forward và backward thì chuỗi cũng có thể được chia theo hai hướng này. Dưới đây là cú pháp của dấu chia chuỗi [] trong Python:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
3

Chẳng hạn với cú pháp

var1[0]:  H
var2[1:5]:  ytho
5, thì toán tử này sẽ trả về các ký tự nằm trong dãy chỉ mục đã cho.

Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
4

Ghi chú: chi_muc_bat_dau trong String là inclusive, tức là bao gồm cả ký tự tại vị trí chỉ mục đó. Còn chi_muc_ket_thuc là exclusive, tức là không bao gồm ký tự tại chỉ mục đó.

Toán tử định dạng chuỗi trong Python

Một trong những đặc điểm hay nhất trong Python là toán tử định dạng chuỗi %. Toán tử này là duy nhất cho các String và được sử dụng với hàm print[]. Ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
5

Khi code trên được thực thi sẽ cho kết quả:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
6

Bảng dưới đây liệt kê danh sách đầy đủ các biểu tượng có thể được sử dụng với toán tử %:

Biểu tượng định dạngChuyển đổi%cKý tự%sChuyển đổi thành chuỗi thông qua hàm str[] trước khi định dạng%iSố nguyên thập phân có dấu%dSố nguyên thập phân có dấu%uSố nguyên thập phân không dấu%oSố nguyên hệ bát phân%xSố nguyên hệ thập lục phân [các chữ cái thường]%XSố nguyên hệ thập lục phân [các chữ cái hoa]%eKý hiệu số mũ [với chữ thường 'e']%EKý hiệu số mũ [với chữ hoa 'E']%fSố thực dấu chấm động%gViết gọn của %f và %e%GViết gọn của %f và %E

Trích dẫn tam [triple quote] trong Python

Trích dẫn tam trong Python cho phép các chuỗi có thể trải rộng trên nhiều dòng, bao gồm đúng nguyên văn của các newline [dòng mới], tab và bất kỳ ký tự đặc biệt nào khác. Bạn theo dõi đoạn code sau:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
7

Khi code trên được thực thi, nó cho kết quả như dưới đây. Bạn chú ý cách mỗi ký tự đặc biệt đã được chuyển đổi thành dạng được in của nó.

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
8

Các chuỗi thô [raw string] không coi dấu \ như là một ký tự đặc biệt. Mỗi ký tự bạn đặt vào trong một chuỗi thô sẽ tồn tại giống như cách bạn đã viết nó.

Để hiểu rõ vấn đề này, trước hết bạn theo dõi ví dụ:

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
9

Khi code trên được thực thi sẽ cho kết quả:

var1[0]:  H
var2[1:5]:  ytho
0

Bây giờ sử dụng chuỗi thô. Chúng ta đã đặt biểu thức trong r'bieu_thuc' như sau:

var1[0]:  H
var2[1:5]:  ytho
1

Khi code trên được thực thi sẽ cho kết quả:

var1[0]:  H
var2[1:5]:  ytho
2

Chuỗi dạng Unicode trong Python

Các chuỗi thông thường trong Python được lưu trữ nội tại dưới dạng ASCII 8 bit, trong khi các chuỗi Unicode được lưu trữ dưới dạng Unicode 16 bit. Điều này cho phép để có một tập hợp các ký tự đa dạng hơn, bao gồm các ký tự đặc biệt từ hầu hết các ngôn ngữ trên thế giới. Bạn theo dõi ví dụ:

var1[0]:  H
var2[1:5]:  ytho
3

Khi code trên được thực thi sẽ cho kết quả:

var1[0]:  H
var2[1:5]:  ytho
4

Như bạn có thể thấy, các chuỗi dạng Unicode sử dụng tiền tố u, trong khi các chuỗi thô sử dụng tiền tố r.

Các phương thức và hàm đã xây dựng sẵn để xử lý chuỗi trong Python

Python cung cấp các phương thức đa dạng đã được xây dựng sẵn để thao tác với các chuỗi. Bảng dưới đây liệt kê các phương thức này. Bạn truy cập link để thấy ví dụ chi tiết.

Str là lệnh gì?

Trả về một Biến_thể [Chuỗi] đại diện một con số. tham đối số được yêu cầu một khoảng thời gian dài bất kỳ biểu thức số nào hợp lệ. Khi số được chuyển đổi thành chuỗi, một khoảng trắng đứng đầu luôn được dành riêng cho dấu của số.

Bool là gì Python?

Boolean là một khái niệm tồn tại trong mọi ngôn ngữ lập trình. Một boolean đại diện cho ý tưởng "true" hoặc "false". Khi bạn đang viết một chương trình, thường có những trường hợp bạn muốn thực thi các đoạn mã khác nhau trong các tình huống khác nhau.

Đâu là kiểu chuỗi?

Chuỗi [string] 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 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], đó sử dụng dấu nháy đơn hoặc dấu nháy kép.

__ STR __ trong Python là gì?

– Câu lệnh print và hàm str[] được tích hợp sẵn trong Python sử dụng __str__ để hiển thị dạng biểu diễn theo kiểu string của đối tượng, trong khi hàm repr[] sẽ sử dụng __repr__ để hiển thị đối tượng.

Chủ Đề