Làm cách nào để tôi chỉ in một ký tự trong python?

Sử dụng cắt chuỗi để in các ký tự cụ thể trong một chuỗi, e. g.

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
04. Hàm
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
05 sẽ in ký tự hoặc lát chuỗi đã chỉ định tới thiết bị đầu cuối

3 ví dụ đầu tiên truy cập một ký tự cụ thể tại chỉ mục của nó và in kết quả

Các chỉ mục Python dựa trên số 0, vì vậy ký tự đầu tiên trong chuỗi có chỉ số là

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
06 và ký tự cuối cùng có chỉ số là
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
07 hoặc
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
08

Chỉ số âm có thể được sử dụng để đếm ngược, e. g.

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
09 trả về ký tự cuối cùng trong chuỗi và
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
10 trả về ký tự thứ hai đến cuối cùng

Hàm lấy một hoặc nhiều đối tượng và in chúng ra

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
11

Lưu ý rằng hàm

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
05 trả về
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
13, vì vậy đừng cố lưu trữ kết quả của việc gọi
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
050 trong một biến

Thay vào đó, lưu trữ biểu thức trong một biến và in kết quả

Nếu bạn cố gắng truy cập vào một chỉ mục không có trong chuỗi, thì sẽ xuất hiện lỗi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
051

Bạn có thể sử dụng câu lệnh

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
052 nếu cần xử lý lỗi

Nếu bạn cần in nhiều ký tự trong một chuỗi, hãy sử dụng tính năng cắt chuỗi

Cú pháp cắt chuỗi là

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
053

Chỉ mục

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
054 là bao gồm, trong khi chỉ mục
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
055 là độc quyền [tối đa, nhưng không bao gồm]

Nếu chỉ số

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
054 không được chỉ định, lát bắt đầu tại chỉ số
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
06

Nếu chỉ mục

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
055 không được chỉ định, lát bắt đầu tại chỉ mục đã chỉ định và tiếp tục đến cuối chuỗi

Nếu bạn cần lấy một lát ở đâu đó ở giữa chuỗi, hãy chỉ định các chỉ mục

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
054 và
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
055

Phương thức trả về chỉ mục của lần xuất hiện đầu tiên của chuỗi con được cung cấp trong chuỗi

Phương thức tăng một

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
061 nếu không tìm thấy chuỗi con trong chuỗi

Lưu ý rằng chỉ mục

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
055 là độc quyền [tối đa, nhưng không bao gồm]

Nếu bạn cần in các ký tự trong chuỗi và chỉ số tương ứng, hãy sử dụng hàm

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
063

Hàm nhận một lần lặp và trả về một đối tượng liệt kê chứa các bộ trong đó phần tử đầu tiên là chỉ mục và phần tử thứ hai là mục tương ứng

Trong hướng dẫn Python này, chúng ta sẽ tìm hiểu cách in từng ký tự của một chuỗi trong Python. Nếu bạn tìm kiếm chủ đề này trên internet, tôi chắc chắn rằng bạn sẽ tìm thấy rất nhiều kỹ thuật để làm điều này. Nhưng chúng tôi luôn tập trung vào cách tốt nhất và dễ dàng nhất để giải quyết mọi vấn đề. Vì vậy, ở đây chúng tôi sẽ không chỉ cho bạn nhiều kỹ thuật để in từng ký tự từ một chuỗi trong Python

Để làm được điều này, chúng ta chỉ cần một chuỗi và một vòng lặp for để thực hiện thao tác của mình

In từng ký tự từ một chuỗi trong Python từng cái một

Hãy lấy một chuỗi ví dụ

this_string = "Hey I am CodeSpeedy!!!"

Bây giờ chúng tôi muốn một chương trình Python sẽ lấy từng ký tự từ chuỗi và in từng ký tự một

Hãy tạo chương trình của chúng tôi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string

đầu ra

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y

đầu ra

Giải thích về chương trình Python

Chúng tôi đã lấy một chuỗi. Sau đó sử dụng vòng lặp for để lặp qua chuỗi

Trong vòng lặp for này, chúng tôi đã in từng ký tự từ chuỗi theo chỉ số của nó bắt đầu từ 0 đến độ dài của chuỗi

Chỉ số ký tự của “H” -> 0 và “e” -> 1 , “y” -> 2  v.v.

Chúng tôi đã in từng ký tự một bằng vòng lặp for

In các ký tự từ chuỗi với độ trễ thời gian nhất định

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]

Nó sẽ cung cấp cho bạn cùng một đầu ra. Nhưng ở đây, mỗi ký tự sẽ được in với độ trễ nửa giây

Có một số cách để trình bày đầu ra của một chương trình; . Chương này sẽ thảo luận về một số khả năng

7. 1. Định dạng đầu ra đẹp hơn

Cho đến nay, chúng tôi đã gặp hai cách viết giá trị. câu lệnh biểu thức và hàm. [Cách thứ ba là sử dụng phương thức

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
0 của các đối tượng tệp; tệp đầu ra tiêu chuẩn có thể được tham chiếu là
>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
1. Xem Tham khảo thư viện để biết thêm thông tin về điều này. ]

Thông thường, bạn sẽ muốn kiểm soát nhiều hơn định dạng đầu ra của mình hơn là chỉ in các giá trị được phân tách bằng dấu cách. Có một số cách để định dạng đầu ra

  • Để sử dụng , hãy bắt đầu một chuỗi bằng

    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    2 hoặc
    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    3 trước dấu ngoặc kép mở hoặc dấu ngoặc kép ba. Bên trong chuỗi này, bạn có thể viết một biểu thức Python giữa các ký tự
    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    4 và
    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    5 có thể tham chiếu đến các biến hoặc giá trị bằng chữ

    this_string = "Hey I am CodeSpeedy"
    
    for character_index in this_string:
       print[character_index] # print each character at a time from string
    0

  • Phương pháp dây đòi hỏi nhiều nỗ lực thủ công hơn. Bạn vẫn sẽ sử dụng

    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    4 và
    >>> import math
    >>> print[f'The value of pi is approximately {math.pi:.3f}.']
    The value of pi is approximately 3.142.
    
    5 để đánh dấu nơi một biến sẽ được thay thế và có thể cung cấp các chỉ thị định dạng chi tiết, nhưng bạn cũng cần cung cấp thông tin cần định dạng

    this_string = "Hey I am CodeSpeedy"
    
    for character_index in this_string:
       print[character_index] # print each character at a time from string
    3

  • Cuối cùng, bạn có thể tự xử lý tất cả các chuỗi bằng cách sử dụng các thao tác nối và cắt chuỗi để tạo bất kỳ bố cục nào mà bạn có thể tưởng tượng. Loại chuỗi có một số phương thức thực hiện các thao tác hữu ích để đệm chuỗi theo chiều rộng cột nhất định

Khi bạn không cần đầu ra ưa thích mà chỉ muốn hiển thị nhanh một số biến cho mục đích gỡ lỗi, bạn có thể chuyển đổi bất kỳ giá trị nào thành chuỗi bằng hàm hoặc

Hàm này có nghĩa là trả về các biểu diễn của các giá trị mà con người khá dễ đọc, trong khi có nghĩa là tạo ra các biểu diễn mà trình thông dịch có thể đọc được [hoặc sẽ buộc a nếu không có cú pháp tương đương]. Đối với các đối tượng không có đại diện cụ thể cho tiêu dùng của con người, sẽ trả về giá trị giống như. Nhiều giá trị, chẳng hạn như số hoặc cấu trúc như danh sách và từ điển, có cùng cách biểu diễn khi sử dụng một trong hai hàm. Đặc biệt, các chuỗi có hai biểu diễn riêng biệt

Vài ví dụ

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
4

Mô-đun chứa một lớp cung cấp một cách khác để thay thế các giá trị thành chuỗi, sử dụng các trình giữ chỗ như

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
58 và thay thế chúng bằng các giá trị từ một từ điển, nhưng cung cấp ít quyền kiểm soát định dạng hơn nhiều

7. 1. 1. Chuỗi ký tự được định dạng

[còn được gọi tắt là f-strings] cho phép bạn bao gồm giá trị của các biểu thức Python bên trong một chuỗi bằng cách đặt trước chuỗi bằng

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
2 hoặc
>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
3 và viết các biểu thức dưới dạng
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
81

Một công cụ xác định định dạng tùy chọn có thể theo sau biểu thức. Điều này cho phép kiểm soát tốt hơn cách định dạng giá trị. Ví dụ sau đây làm tròn số pi đến ba vị trí sau dấu thập phân

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.

Truyền một số nguyên sau

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
82 sẽ khiến trường đó có số lượng ký tự tối thiểu. Điều này rất hữu ích để làm cho các cột thẳng hàng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
5

Các công cụ sửa đổi khác có thể được sử dụng để chuyển đổi giá trị trước khi nó được định dạng. Áp dụng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
83 , áp dụng
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
85 và áp dụng
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
87

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
8

Trình xác định

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
89 có thể được sử dụng để mở rộng một biểu thức thành văn bản của biểu thức, một dấu bằng, sau đó biểu diễn biểu thức được đánh giá

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
7

Xem để biết thêm thông tin về công cụ xác định

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
89. Để tham khảo về các thông số định dạng này, hãy xem hướng dẫn tham khảo cho

7. 1. 2. Phương thức String format[]

Cách sử dụng cơ bản của phương thức trông như thế này

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
9

Các dấu ngoặc và ký tự bên trong chúng [được gọi là các trường định dạng] được thay thế bằng các đối tượng được truyền vào phương thức. Một số trong ngoặc có thể được sử dụng để chỉ vị trí của đối tượng được truyền vào phương thức

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
0

Nếu các đối số từ khóa được sử dụng trong phương thức, các giá trị của chúng được gọi bằng cách sử dụng tên của đối số

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
1

Đối số vị trí và từ khóa có thể được kết hợp tùy ý

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
30

Nếu bạn có một chuỗi định dạng thực sự dài mà bạn không muốn chia nhỏ, sẽ rất tuyệt nếu bạn có thể tham chiếu các biến được định dạng theo tên thay vì theo vị trí. Điều này có thể được thực hiện bằng cách chuyển chính tả và sử dụng dấu ngoặc vuông

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
75 để truy cập các phím

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
31

Điều này cũng có thể được thực hiện bằng cách chuyển từ điển

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
76 làm đối số từ khóa với ký hiệu
H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
77

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
32

Điều này đặc biệt hữu ích khi kết hợp với hàm tích hợp sẵn, trả về một từ điển chứa tất cả các biến cục bộ

Ví dụ: các dòng sau tạo ra một tập hợp các cột được sắp xếp gọn gàng cho các số nguyên và hình vuông và hình khối của chúng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
33

Để biết tổng quan đầy đủ về định dạng chuỗi với , hãy xem

7. 1. 3. Định dạng chuỗi thủ công

Đây là cùng một bảng hình vuông và hình khối, được định dạng thủ công

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
34

[Lưu ý rằng một khoảng cách giữa mỗi cột đã được thêm vào theo cách hoạt động. nó luôn thêm khoảng trắng giữa các đối số của nó. ]

Phương thức của các đối tượng chuỗi canh phải một chuỗi trong một trường có độ rộng nhất định bằng cách đệm nó bằng các khoảng trắng ở bên trái. Có những phương pháp tương tự và. Các phương thức này không viết bất cứ thứ gì, chúng chỉ trả về một chuỗi mới. Nếu chuỗi đầu vào quá dài, họ sẽ không cắt bớt mà trả về không thay đổi; . [Nếu bạn thực sự muốn cắt ngắn, bạn luôn có thể thêm thao tác cắt lát, như trong

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
94. ]

Có một phương thức khác, , đệm một chuỗi số ở bên trái bằng các số không. Nó hiểu về dấu cộng và dấu trừ

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
35

7. 1. 4. Định dạng chuỗi cũ

Toán tử % [modulo] cũng có thể được sử dụng để định dạng chuỗi. Cho trước

H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
96, các trường hợp của
H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
97 trong
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
56 được thay thế bằng 0 hoặc nhiều phần tử của
H
e
y

I

a
m

C
o
d
e
S
p
e
e
d
y
99. Hoạt động này thường được gọi là nội suy chuỗi. Ví dụ

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
36

Thông tin thêm có thể được tìm thấy trong phần

7. 2. Đọc và ghi tệp

trả về a và được sử dụng phổ biến nhất với hai đối số vị trí và một đối số từ khóa.

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
01

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
37

Đối số đầu tiên là một chuỗi chứa tên tệp. Đối số thứ hai là một chuỗi khác chứa một vài ký tự mô tả cách sử dụng tệp. chế độ có thể là

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
02 khi tệp sẽ chỉ được đọc,
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
03 chỉ để ghi [tệp hiện có cùng tên sẽ bị xóa] và
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
04 mở tệp để nối thêm; .
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
05 mở tệp cho cả đọc và ghi. Đối số chế độ là tùy chọn;

Thông thường, các tệp được mở ở chế độ văn bản, nghĩa là bạn đọc và ghi các chuỗi từ và đến tệp, được mã hóa bằng một mã hóa cụ thể. Nếu mã hóa không được chỉ định, mặc định sẽ phụ thuộc vào nền tảng [xem ]. Vì UTF-8 là tiêu chuẩn thực tế hiện đại, nên sử dụng

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
08 trừ khi bạn biết rằng mình cần sử dụng một mã hóa khác. Nối một
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
09 vào chế độ sẽ mở tệp ở chế độ nhị phân. Dữ liệu chế độ nhị phân được đọc và ghi dưới dạng đối tượng. Bạn không thể chỉ định mã hóa khi mở tệp ở chế độ nhị phân

Ở chế độ văn bản, mặc định khi đọc là chuyển đổi kết thúc dòng dành riêng cho nền tảng [

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
11 trên Unix,
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
12 trên Windows] thành chỉ
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
11. Khi viết ở chế độ văn bản, mặc định là chuyển đổi các lần xuất hiện của
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
11 trở lại kết thúc dòng dành riêng cho nền tảng. Việc sửa đổi hậu trường này đối với dữ liệu tệp phù hợp với tệp văn bản, nhưng sẽ làm hỏng dữ liệu nhị phân như vậy trong tệp
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
15 hoặc
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
16. Hãy thật cẩn thận khi sử dụng chế độ nhị phân khi đọc và ghi các tệp đó

Nên sử dụng từ khóa khi xử lý các đối tượng tệp. Ưu điểm là tệp được đóng đúng cách sau khi bộ phần mềm của nó kết thúc, ngay cả khi một ngoại lệ được đưa ra tại một số điểm. Sử dụng

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
17 cũng ngắn hơn nhiều so với cách viết tương đương - blocks

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
38

Nếu bạn không sử dụng từ khóa, thì bạn nên gọi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
302 để đóng tệp và ngay lập tức giải phóng mọi tài nguyên hệ thống được sử dụng bởi nó

Cảnh báo

Gọi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
303 mà không sử dụng từ khóa
import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
17 hoặc gọi
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
302 có thể dẫn đến các đối số của
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
303 không được ghi hoàn toàn vào đĩa, ngay cả khi chương trình thoát thành công

Sau khi một đối tượng tệp bị đóng, bằng một câu lệnh hoặc bằng cách gọi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
302, các nỗ lực sử dụng đối tượng tệp sẽ tự động thất bại

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
39

7. 2. 1. Phương thức của đối tượng tệp

Phần còn lại của các ví dụ trong phần này sẽ giả định rằng một đối tượng tệp có tên là

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
2 đã được tạo

Để đọc nội dung của tệp, hãy gọi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
310, đọc một số lượng dữ liệu và trả về dưới dạng chuỗi [ở chế độ văn bản] hoặc đối tượng byte [ở chế độ nhị phân]. kích thước là một đối số số tùy chọn. Khi kích thước bị bỏ qua hoặc âm, toàn bộ nội dung của tệp sẽ được đọc và trả về; . Mặt khác, ở hầu hết các ký tự kích thước [ở chế độ văn bản] hoặc byte kích thước [ở chế độ nhị phân] đều được đọc và trả về. Nếu đã đến cuối tệp,
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
311 sẽ trả về một chuỗi rỗng [
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
312]

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
40

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
313 đọc một dòng từ tệp; . Điều này làm cho giá trị trả về trở nên rõ ràng;

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
41

Để đọc các dòng từ một tệp, bạn có thể lặp qua đối tượng tệp. Đây là bộ nhớ hiệu quả, nhanh chóng và dẫn đến mã đơn giản

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
42

Nếu bạn muốn đọc tất cả các dòng của tệp trong danh sách, bạn cũng có thể sử dụng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
317 hoặc
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
318

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
319 ghi nội dung của chuỗi vào tệp, trả về số ký tự đã ghi

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
43

Các loại đối tượng khác cần được chuyển đổi – thành chuỗi [ở chế độ văn bản] hoặc đối tượng byte [ở chế độ nhị phân] – trước khi viết chúng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
44

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
320 trả về một số nguyên cho biết vị trí hiện tại của đối tượng tệp trong tệp được biểu thị dưới dạng số byte từ đầu tệp khi ở chế độ nhị phân và một số mờ khi ở chế độ văn bản

Để thay đổi vị trí của đối tượng tệp, hãy sử dụng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
321. Vị trí được tính từ việc thêm phần bù vào điểm tham chiếu; . Giá trị bắt nguồn từ 0 đo từ đầu tệp, 1 sử dụng vị trí tệp hiện tại và 2 sử dụng cuối tệp làm điểm tham chiếu. từ đâu có thể được bỏ qua và mặc định là 0, sử dụng phần đầu của tệp làm điểm tham chiếu

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
45

Trong các tệp văn bản [những tệp được mở mà không có

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
322 trong chuỗi chế độ], chỉ cho phép tìm kiếm liên quan đến phần đầu của tệp [ngoại lệ là tìm kiếm đến chính tệp kết thúc bằng
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
323] và các giá trị offset hợp lệ duy nhất là các giá trị được trả về từ . Bất kỳ giá trị bù nào khác đều tạo ra hành vi không xác định

Các đối tượng tệp có một số phương thức bổ sung, chẳng hạn như

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
325 và
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
326 ít được sử dụng hơn;

7. 2. 2. Lưu dữ liệu có cấu trúc với

Các chuỗi có thể dễ dàng được ghi và đọc từ một tệp. Các số tốn nhiều công sức hơn một chút, vì phương thức

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
328 chỉ trả về các chuỗi, chuỗi này sẽ phải được chuyển đến một hàm như , hàm này nhận một chuỗi như
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
330 và trả về giá trị số 123 của nó. Khi bạn muốn lưu các loại dữ liệu phức tạp hơn như danh sách lồng nhau và từ điển, việc phân tích cú pháp và tuần tự hóa bằng tay trở nên phức tạp

Thay vì yêu cầu người dùng liên tục viết và gỡ lỗi mã để lưu các loại dữ liệu phức tạp vào tệp, Python cho phép bạn sử dụng định dạng trao đổi dữ liệu phổ biến được gọi là JSON [Ký hiệu đối tượng JavaScript]. Mô-đun tiêu chuẩn được gọi có thể lấy phân cấp dữ liệu Python và chuyển đổi chúng thành biểu diễn chuỗi; . Tái tạo lại dữ liệu từ biểu diễn chuỗi được gọi là giải tuần tự hóa. Giữa tuần tự hóa và giải tuần tự hóa, chuỗi đại diện cho đối tượng có thể đã được lưu trữ trong một tệp hoặc dữ liệu hoặc được gửi qua kết nối mạng tới một số máy ở xa

Ghi chú

Định dạng JSON thường được các ứng dụng hiện đại sử dụng để cho phép trao đổi dữ liệu. Nhiều lập trình viên đã quen thuộc với nó, điều này làm cho nó trở thành một lựa chọn tốt cho khả năng tương tác

Nếu bạn có một đối tượng

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
332, bạn có thể xem biểu diễn chuỗi JSON của nó bằng một dòng mã đơn giản

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
46

Một biến thể khác của hàm, được gọi là, chỉ cần tuần tự hóa đối tượng thành một. Vì vậy, nếu

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
2 là một đối tượng được mở để viết, chúng ta có thể làm điều này

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
47

Để giải mã lại đối tượng, nếu

>>> import math
>>> print[f'The value of pi is approximately {math.pi:.3f}.']
The value of pi is approximately 3.142.
2 là một hoặc đối tượng đã được mở để đọc

this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
48

Ghi chú

Các tệp JSON phải được mã hóa bằng UTF-8. Sử dụng

import time
this_string = "Hey I am CodeSpeedy"

for character_index in this_string:
   print[character_index] # print each character at a time from string
   time.sleep[0.5]
08 khi mở tệp JSON dưới dạng cho cả đọc và viết

Kỹ thuật tuần tự hóa đơn giản này có thể xử lý các danh sách và từ điển, nhưng việc tuần tự hóa các cá thể lớp tùy ý trong JSON đòi hỏi một chút nỗ lực. Tài liệu tham khảo cho mô-đun chứa một lời giải thích về điều này

Xem thêm

- mô-đun dưa chua

Trái ngược với , pickle là một giao thức cho phép tuần tự hóa các đối tượng Python phức tạp tùy ý. Do đó, nó dành riêng cho Python và không thể được sử dụng để giao tiếp với các ứng dụng được viết bằng các ngôn ngữ khác. Nó cũng không an toàn theo mặc định. giải tuần tự hóa dữ liệu pickle đến từ một nguồn không đáng tin cậy có thể thực thi mã tùy ý, nếu dữ liệu được tạo bởi một kẻ tấn công lành nghề

Chủ Đề