Hướng dẫn string literal vs string python - chuỗi chữ so với chuỗi python

\ (\ newcommand {l} [1] {\ | #1 \ |} \ newcommand {vl} [1] {\ l {\ vec Re} \, (#1)} \ newCommand {i} [1] {\ operatorName {im} \, (#1)} \)

Một chuỗi theo nghĩa đen là nơi bạn chỉ định nội dung của một chuỗi trong một chương trình.

Ở đây, một chuỗi là một chuỗi theo nghĩa đen. Biến A là một biến chuỗi, hoặc, tốt hơn là Python, một biến trỏ đến một chuỗi.

Chuỗi chữ có thể sử dụng các dấu phân cách trích dẫn đơn hoặc kép.

>>> a = 'A string'  # string literal with single quotes
>>> b = "A string"  # string literal with double quotes
>>> b == a  # there is no difference between these strings
True

Chuỗi theo nghĩa đen với các dấu phân cách trích dẫn đơn có thể sử dụng báo giá kép bên trong chúng mà không cần thêm công việc.

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem

Nếu bạn cần một ký tự trích dẫn thực tế bên trong một chuỗi theo nghĩa đen được phân định bởi các trích dẫn đơn, bạn có thể sử dụng ký tự dấu gạch chéo ngược trước khi trích dẫn, để nói với Python không chấm dứt chuỗi:

>>> print('Single quoted string containing \' is OK with backslash')
Single quoted string containing ' is OK with backslash

Tương tự như vậy cho trích dẫn kép:

>>> print("Double quoted string with ' is no problem")
Double quoted string with ' is no problem
>>> print("Double quoted string containing \" is OK with backslash")
Double quoted string containing " is OK with backslash

Một số ký tự đi trước bởi một dấu gạch chéo ngược có ý nghĩa đặc biệt. Ví dụ:

>>> print('Backslash before "n", as in \n, inserts a new line character')  #doctest: +NORMALIZE_WHITESPACE
Backslash before "n", as in
, inserts a new line character

Nếu bạn không muốn dấu gạch chéo ngược có ý nghĩa đặc biệt này, hãy đặt tiền tố theo nghĩa đen của bạn với ‘R, có nghĩa là Raw Raw:

>>> print(r'Prefixed by "r" the \n no longer inserts a new line')
Prefixed by "r" the \n no longer inserts a new line

Bạn có thể sử dụng trích dẫn ba để kèm theo các chuỗi có nhiều hơn một dòng:

>>> print('''This string literal
... has more than one
... line''')
This string literal
has more than one
line

Báo giá ba có thể sử dụng dấu ngoặc kép đơn hoặc kép:

>>> print("""This string literal
... also has more than one
... line""")
This string literal
also has more than one
line

Python có một lớp chuỗi tích hợp có tên "str" ​​với nhiều tính năng tiện dụng (có một mô-đun cũ hơn có tên là "chuỗi" mà bạn không nên sử dụng). Chuỗi chữ có thể được bao quanh bởi các trích dẫn kép hoặc đơn, mặc dù các trích dẫn đơn được sử dụng phổ biến hơn. Backslash thoát khỏi hoạt động theo cách thông thường trong cả hai chữ được trích dẫn đơn và kép - ví dụ: \ n \ '\ ". Một chuỗi được trích dẫn kép có thể chứa các trích dẫn đơn mà không có bất kỳ sự ồn ào nào (ví dụ:" Tôi đã không làm điều đó ") và tương tự chuỗi được trích dẫn có thể chứa các trích dẫn kép. Phải là một dấu gạch chéo ngược \ ở cuối mỗi dòng để thoát khỏi dòng mới. Chuỗi chữ viết trong ba trích dẫn, "" "hoặc '' ', có thể trải rộng nhiều dòng văn bản.

Các chuỗi Python là "bất biến", điều đó có nghĩa là chúng không thể thay đổi sau khi chúng được tạo ra (chuỗi Java cũng sử dụng phong cách bất biến này). Vì các chuỗi không thể thay đổi, chúng tôi xây dựng các chuỗi * mới * khi chúng tôi đi để biểu diễn các giá trị được tính toán. Vì vậy, ví dụ như biểu thức ('xin chào' + 'ở đó') có trong 2 chuỗi 'xin chào' và 'ở đó' và xây dựng một chuỗi mới 'Hellothere'.

Các ký tự trong một chuỗi có thể được truy cập bằng cú pháp [] tiêu chuẩn và như Java và C ++, Python sử dụng lập chỉ mục dựa trên không, vì vậy nếu s là 'Hello' [1] là 'e'. Nếu chỉ mục nằm ngoài giới hạn cho chuỗi, Python sẽ gây ra lỗi. Kiểu Python (không giống như Perl) là tạm dừng nếu không thể biết phải làm gì, thay vì chỉ tạo ra một giá trị mặc định. Cú pháp "lát" tiện dụng (bên dưới) cũng hoạt động để trích xuất bất kỳ chuỗi con nào từ một chuỗi. Hàm Len (Chuỗi) trả về độ dài của chuỗi. Chức năng [] và chức năng Len () thực sự hoạt động trên bất kỳ loại trình tự nào - chuỗi, danh sách, v.v. Python Newbie Gotcha: Không sử dụng "Len" làm tên biến để tránh chặn hàm Len (). Toán tử '+' có thể nối hai chuỗi. Lưu ý trong mã bên dưới rằng các biến không được khai báo trước-chỉ cần gán cho chúng và đi.

  s = 'hi'
  print s[1]          ## i
  print len(s)        ## 2
  print s + ' there'  ## hi there

Không giống như Java, '+' không tự động chuyển đổi số hoặc các loại khác thành biểu mẫu chuỗi. Hàm str () chuyển đổi các giá trị thành một biểu mẫu chuỗi để chúng có thể được kết hợp với các chuỗi khác.

  pi = 3.14
  ##text = 'The value of pi is ' + pi      ## NO, does not work
  text = 'The value of pi is '  + str(pi)  ## yes

Đối với các số, các toán tử tiêu chuẩn, +, /, * hoạt động theo cách thông thường. Không có toán tử ++, nhưng +=, -=, v.v. Nếu bạn muốn phân chia số nguyên, hãy sử dụng 2 dấu gạch chéo - ví dụ: 6 // 5 là 1

Hàm "In" thường in ra một hoặc nhiều mục Python theo sau là một dòng mới. Một chuỗi "thô" theo nghĩa đen được đặt trước bởi một 'r' và truyền tất cả các ký tự thông qua mà không cần xử lý đặc biệt các dấu gạch chéo ngược, do đó, r'x \ nx 'đánh giá theo chuỗi dài-4' x \ nx '. "In" có thể lấy một số đối số để thay đổi cách nó in mọi thứ (xem Python.org Định nghĩa chức năng in) như cài đặt "kết thúc" thành "" để không còn in một dòng mới sau khi nó hoàn thành việc in ra tất cả các mục.

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
0

Phương thức chuỗi

Dưới đây là một số phương pháp chuỗi phổ biến nhất. Một phương thức giống như một hàm, nhưng nó chạy "trên" một đối tượng. Nếu biến s là một chuỗi, thì mã s.lower () chạy phương thức thấp hơn () trên đối tượng chuỗi đó và trả về kết quả (ý tưởng này về một phương thức chạy trên một đối tượng là một trong những ý tưởng cơ bản tạo ra đối tượng Lập trình định hướng, OOP). Dưới đây là một số phương thức chuỗi phổ biến nhất:

  • s.lower (), s.upper () - Trả về phiên bản chữ thường hoặc chữ hoa của chuỗi
  • s.strip () - Trả về một chuỗi với khoảng trắng bị loại bỏ từ đầu và kết thúc
  • s.isalpha ()/s.isdigit ()/s.isspace () ... - kiểm tra xem tất cả các chars chuỗi nằm trong các lớp ký tự khác nhau
  • s.StartSwith ('other'), s.endswith ('other') - kiểm tra xem chuỗi bắt đầu hoặc kết thúc với chuỗi đã cho khác
  • s.find ('other') -tìm kiếm chuỗi đã cho khác (không phải là biểu thức chính quy) trong s và trả về chỉ mục đầu tiên nơi nó bắt đầu hoặc -1 nếu không tìm thấy
  • s.replace ('cũ', 'mới') - trả về một chuỗi trong đó tất cả các lần xuất hiện của 'cũ' đã được thay thế bằng 'mới'
  • S.Split ('Delim') - Trả về một danh sách các chuỗi con được phân tách bằng dấu phân cách đã cho. Phân phối không phải là một biểu thức chính quy, nó chỉ là văn bản. 'aaa, bbb, ccc'.split (', ') -> [' aaa ',' bbb ',' ccc ']. Như một trường hợp đặc biệt thuận tiện S.Split () (không có đối số) chia tách trên tất cả các chars trắng.
  • s.join (danh sách) - Đối diện với split (), tham gia các phần tử trong danh sách đã cho với nhau bằng cách sử dụng chuỗi làm dấu phân cách. ví dụ. '---'. Tham gia (['aaa', 'bbb', 'ccc'])-> aaa --- bbb --- ccc

Một tìm kiếm của Google cho "Python str" sẽ dẫn bạn đến các phương thức chuỗi python.org chính thức liệt kê tất cả các phương thức STR.

Python không có loại ký tự riêng biệt. Thay vào đó, một biểu thức như S [8] trả về một chuỗi độ dài-1 chứa ký tự. Với chuỗi dài-1 đó, các toán tử ==,

Chuỗi lát chuỗi

Cú pháp "Slice" là một cách tiện dụng để chỉ các phần phụ của các chuỗi-thường là các chuỗi và danh sách. Các lát [bắt đầu: kết thúc] là các yếu tố bắt đầu khi bắt đầu và mở rộng đến nhưng không bao gồm kết thúc. Giả sử chúng ta có s = "xin chào"

Hướng dẫn string literal vs string python - chuỗi chữ so với chuỗi python

  • S [1: 4] là 'ELL' - ký tự bắt đầu tại INDEX 1 và mở rộng lên đến nhưng không bao gồm INDEX 4
  • s [1:] là 'ello' - bỏ qua các mặc định chỉ mục vào đầu hoặc kết thúc chuỗi
  • S [:] là 'Xin chào' - Bỏ qua cả hai luôn cung cấp cho chúng tôi một bản sao của toàn bộ (đây là cách Pythonic để sao chép một chuỗi như một chuỗi hoặc danh sách)
  • S [1: 100] là 'ello' - một chỉ mục quá lớn được cắt xuống theo chiều dài chuỗi

Các số chỉ mục dựa trên không có tiêu chuẩn cho phép truy cập dễ dàng vào các ký tự gần đầu chuỗi. Thay vào đó, Python sử dụng các số âm để dễ dàng truy cập vào ký tự ở cuối chuỗi: S [-1] là char cuối cùng 'o', s [-2] là 'l' char, và như vậy. Số chỉ mục âm tính trở lại từ cuối chuỗi:

  • S [-1] là 'o'-char cuối cùng (thứ 1 từ cuối)
  • s [-4] là 'e'-thứ 4 từ cuối
  • S [:-3] là 'anh ấy'-đi đến nhưng không bao gồm 3 ký tự cuối cùng.
  • S [-3:] là 'llo'-bắt đầu với char thứ 3 từ cuối và mở rộng đến cuối chuỗi.

Đó là một sự thật gọn gàng của các lát cắt mà đối với bất kỳ chỉ số n,

>>> print('Single quoted string containing \' is OK with backslash')
Single quoted string containing ' is OK with backslash
0. Điều này hoạt động ngay cả đối với N âm hoặc ngoài giới hạn. Hoặc đặt một cách khác S [: n] và s [n:] luôn phân vùng chuỗi thành hai phần chuỗi, bảo tồn tất cả các ký tự. Như chúng ta sẽ thấy trong phần Danh sách sau, các lát cắt cũng hoạt động với danh sách.

Định dạng chuỗi

Một điều gọn gàng Python có thể làm là tự động chuyển đổi các đối tượng thành một chuỗi phù hợp để in. Hai cách tích hợp để thực hiện điều này là các chữ được định dạng, còn được gọi là "F-Strings" và gọi str.format ().

Định dạng chuỗi chữ

Bạn sẽ thường thấy các chuỗi chữ được định dạng được sử dụng trong các tình huống như:

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
1

Một chuỗi theo nghĩa đen được định dạng được đặt trước với 'F' (như tiền tố 'r' được sử dụng cho các chuỗi thô). Bất kỳ văn bản nào bên ngoài niềng răng xoăn '{}' được in trực tiếp. Các biểu thức chứa trong '{}' được in ra bằng cách sử dụng đặc tả định dạng được mô tả trong thông số định dạng. Có rất nhiều điều gọn gàng bạn có thể làm với định dạng bao gồm cắt ngắn và chuyển đổi sang ký hiệu khoa học và căn chỉnh bên trái/phải/trung tâm.

Các chuỗi F rất hữu ích khi bạn muốn in ra một bảng các đối tượng và muốn các cột đại diện cho các thuộc tính đối tượng khác nhau được căn chỉnh như

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
2

Sợi dây %

Python cũng có một printf () cũ hơn-như cơ sở để kết hợp một chuỗi. Toán tử %có chuỗi định dạng kiểu printf ở bên trái ( %d int, %s chuỗi, %f/ %g điểm thả nổi) và các giá trị phù hợp dấu phẩy, thường được nhóm bên trong ngoặc đơn):

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
3

Dòng trên là loại dài - giả sử bạn muốn chia nó thành các dòng riêng biệt. Bạn không thể chỉ chia dòng sau '%' như bạn có thể trong các ngôn ngữ khác, vì theo mặc định, Python coi mỗi dòng là một câu lệnh riêng hàng). Để khắc phục điều này, việc đặt toàn bộ biểu thức trong một bộ dấu ngoặc đơn bên ngoài - sau đó biểu thức được phép trải rộng nhiều dòng. Kỹ thuật mã hóa mã này hoạt động với các cấu trúc nhóm khác nhau được nêu chi tiết bên dưới: (), [], {}.

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
4

Điều đó tốt hơn, nhưng dòng vẫn còn hơi dài. Python cho phép bạn cắt một dòng thành các khối, sau đó nó sẽ tự động kết hợp. Vì vậy, để làm cho dòng này thậm chí ngắn hơn, chúng ta có thể làm điều này:

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
5

Chuỗi (unicode vs byte)

Chuỗi python thông thường là unicode.

Python cũng hỗ trợ các chuỗi bao gồm các byte đơn giản (được biểu thị bằng tiền tố 'B' trước một chuỗi theo nghĩa đen) như:

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
6

Chuỗi Unicode là một loại đối tượng khác từ chuỗi byte nhưng các thư viện khác nhau như biểu thức chính quy hoạt động chính xác nếu được truyền một trong hai loại chuỗi.

Để chuyển đổi chuỗi python thông thường thành byte, hãy gọi phương thức mã hóa () trên chuỗi. Đi theo hướng khác, phương thức DECODE () Byte Decode () chuyển đổi các byte đơn giản được mã hóa thành chuỗi unicode:

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
7

Trong phần đọc tệp, có một ví dụ cho thấy cách mở tệp văn bản với một số chuỗi mã hóa và đọc ra các chuỗi Unicode.

Nếu tuyên bố

Python không sử dụng {} để gửi các khối mã cho if/loops/function, v.v. Thay vào đó, Python sử dụng dấu hai chấm (:) và thụt/khoảng trắng để câu lệnh. Bài kiểm tra boolean cho một nếu không cần phải ở trong ngoặc đơn (sự khác biệt lớn so với C ++/Java) và nó có thể có * Elif * và * khác * mệnh đề (mnemonic: từ "elif" có cùng độ dài với từ "" khác").

Bất kỳ giá trị nào cũng có thể được sử dụng như một bài kiểm tra if. Các giá trị "không" tất cả đều được tính là sai: Không, 0, chuỗi trống, danh sách trống, từ điển trống. Ngoài ra còn có một loại boolean với hai giá trị: true và false (được chuyển đổi thành int, đây là 1 và 0). Python có các hoạt động so sánh thông thường: ==,! =, =. Không giống như Java và C, == bị quá tải để hoạt động chính xác với các chuỗi. Các toán tử boolean là các từ được đánh vần là *và *, *hoặc *, *không *(Python không sử dụng kiểu C && ||!). Dưới đây là mã có thể trông như thế nào đối với một ứng dụng sức khỏe cung cấp các khuyến nghị đồ uống trong suốt cả ngày - chú ý cách mỗi khối của các câu lệnh sau đó/khác bắt đầu bằng A: và các câu lệnh được nhóm lại bởi thụt lề của chúng:

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
8

Tôi thấy rằng việc bỏ qua ":" là lỗi cú pháp phổ biến nhất của tôi khi gõ vào loại mã trên, có lẽ vì đó là một điều bổ sung để nhập thói quen C ++/Java của tôi. Ngoài ra, đừng đặt bài kiểm tra Boolean trong ngoặc đơn - đó là thói quen c/java. Nếu mã ngắn, bạn có thể đặt mã trên cùng một dòng sau ":", như thế này (điều này áp dụng cho các chức năng, vòng lặp, v.v. Ngoài ra), mặc dù một số người cảm thấy dễ đọc hơn đối với mọi thứ trên các dòng riêng biệt.

>>> print('Single quoted string with " is no problem')
Single quoted string with " is no problem
9

Bài tập: String1.py

Để thực hành tài liệu trong phần này, hãy thử bài tập chuỗi1.py trong các bài tập cơ bản.string1.py exercise in the Basic Exercises.

Là một chuỗi là một nghĩa đen?

Một "chuỗi chữ" là một chuỗi các ký tự từ bộ ký tự nguồn được đặt trong các dấu ngoặc kép (""). Chuỗi chữ được sử dụng để thể hiện một chuỗi các ký tự, được kết hợp với nhau, tạo thành một chuỗi kết thúc null.. String literals are used to represent a sequence of characters which, taken together, form a null-terminated string.

Chuỗi theo nghĩa đen trong Python là gì?

Chuỗi là gì.Một chuỗi theo nghĩa đen có thể được tạo bằng cách viết một văn bản (một nhóm các ký tự) được bao quanh bởi một câu nói đơn (), gấp đôi (phạm vi) hoặc ba trích dẫn.Bằng cách sử dụng trích dẫn ba, chúng ta có thể viết các chuỗi nhiều dòng hoặc hiển thị chúng theo cách mong muốn.A string literal can be created by writing a text(a group of Characters ) surrounded by a single(”), double(“”), or triple quotes. By using triple quotes we can write multi-line strings or display them in the desired way.

Sự khác biệt giữa chuỗi và chuỗi theo nghĩa đen là gì?

Chuỗi chữ hoặc hằng số được đặt trong các trích dẫn kép "" hoặc với @"".Một chuỗi chứa các ký tự tương tự như chữ ký tự: ký tự đơn giản, trình tự thoát và các ký tự phổ quát.. A string contains characters that are similar to character literals: plain characters, escape sequences, and universal characters.

Sự khác biệt giữa chuỗi chữ và chuỗi mới () là gì?

Khi bạn sử dụng một chuỗi chữ, chuỗi có thể được thực tập, nhưng khi bạn sử dụng một chuỗi mới ("..."), bạn sẽ nhận được một đối tượng chuỗi mới.Nói chung, bạn nên sử dụng ký hiệu theo nghĩa đen của chuỗi khi có thể.Nó dễ đọc hơn và nó cung cấp cho trình biên dịch cơ hội để tối ưu hóa mã của bạn.. In general, you should use the string literal notation when possible. It is easier to read and it gives the compiler a chance to optimize your code.