2.4. String#
Sebuah string adalah urutan karakter Unicode yang ditulis di antara tanda kutip. Tanda kutip tunggal dan ganda setara -- pilih gaya yang memungkinkan Anda menghindari penggunaan escape pada tanda kutip yang muncul di dalam teks:
name = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\"" # both styles can be used
same = 'She said "hi"'
String dengan tiga tanda kutip ("""...""" atau '''...''') mencakup beberapa baris dan mempertahankan baris baru secara harfiah:
banner = """boot ok
firmware v1.28
"""
print(banner)
Output:
boot ok
firmware v1.28
2.4.1. Escape sequence#
Di dalam string biasa, \ memperkenalkan karakter khusus:
\n-- baris baru\t-- tab\\-- backslash harfiah\'/\"-- tanda kutip harfiah (ketika karakter tersebut akan mengakhiri string)\xHH-- karakter dengan kode hexHH\uHHHH-- codepoint UnicodeHHHH
Ketika sebuah string mengandung banyak backslash, tambahkan awalan r pada literal untuk menjadikannya string raw. Backslash kemudian diambil secara harfiah -- \n tetap dua karakter dan tidak diganti dengan baris baru:
win_path = r"C:\Users\OpenMV\camera.py"
literal = r"\n is two characters, not a newline"
2.4.2. Penggabungan dan pengulangan#
Dua string digabung dengan +; sebuah string diulang dengan *:
greeting = "Hello, " + name + "!"
line = "-" * 40 # 40-character separator
Penggunaan + berulang dalam sebuah loop mengalokasikan string baru di setiap iterasi. Untuk membangun string yang lebih besar dari banyak bagian, gunakan str.join().
2.4.3. Panjang, pengindeksan, dan pemotongan#
len() mengembalikan jumlah karakter dalam sebuah string. Pengindeksan dengan [] mengembalikan string satu karakter pada posisi yang diberikan; indeks negatif dihitung dari akhir:
>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'
Sebuah slice s[start:stop] mengembalikan substring dari posisi start hingga tetapi tidak termasuk stop. Salah satu ujung dapat dihilangkan untuk berarti "awal" atau "akhir", dan nilai ketiga opsional s[start:stop:step] memungkinkan Anda melewati karakter.
Posisi slice berada di antara karakter. s[2:5] memilih karakter pada posisi 2, 3, dan 4.#
>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO' # whole string, reversed
Slice di luar jangkauan secara diam-diam mengembalikan bagian yang ada -- s[100:200] adalah string kosong "", bukan sebuah kesalahan. Pengindeksan di luar jangkauan, di sisi lain, memunculkan IndexError.
2.4.4. Immutability#
String tidak dapat dimodifikasi di tempat. Operasi yang terlihat seperti mengubah string sebenarnya mengembalikan string baru dan membiarkan yang asli tidak berubah:
>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV' # unchanged
Untuk "mengubah" sebuah string, ikat ulang nama ke nilai baru: name = name.upper().