HomeLập trìnhPythonChuỗi Python thành...

Chuỗi Python thành mảng – Cách chuyển đổi văn bản thành danh sách


Sẽ có lúc bạn cần chuyển đổi kiểu dữ liệu này sang kiểu dữ liệu khác.

Đừng sợ, vì Python cung cấp nhiều cách khác nhau để giúp bạn làm điều đó.

Trong bài viết này, bạn sẽ thấy một số cách mà bạn có thể chuyển đổi một chuỗi thành một danh sách.

Đây là những gì chúng tôi sẽ đề cập:

  1. Tổng quan về chuỗi và danh sách
    1. Cách kiểm tra kiểu dữ liệu của một đối tượng
  2. Chuyển đổi một chuỗi thành một danh sách các ký tự riêng lẻ
  3. Chuyển đổi một chuỗi thành một danh sách các từ
    1. split() phương pháp phân tích suntax
    2. Sử dụng split() với một dải phân cách
    3. Sử dụng split() với maxsplit tham số
  4. Chuyển đổi một chuỗi số thành một danh sách các số

Chuỗi và Danh sách trong Python là gì?

Một chuỗi là một dãy ký tự có thứ tự. Đó là một chuỗi các ký tự, với ký tự này nối tiếp ký tự kia.

Một chuỗi được bao quanh bởi dấu nháy đơn hoặc kép:

# all the following are strings

# a string enclosed in single quotes
first_name="John"

#a string enclosed in double quotes
last_name = "Doe"

Nếu bạn muốn tạo một chuỗi kéo dài trên nhiều dòng hoặc chuỗi được gọi là chuỗi nhiều dòng, hãy sử dụng ba dấu ngoặc kép để bắt đầu và kết thúc chuỗi:

# a multiline string enclosed in triple quotes

phrase=""'I am learning Python
and I really enjoy learning the language!
'''

Chuỗi là bất biến. Điều này có nghĩa là một khi chúng đã được tạo ra thì chúng không thể thay đổi. Không thể thay đổi các ký tự riêng lẻ tạo nên một chuỗi.

Ví dụ: nếu bạn cố thay đổi chữ cái đầu tiên của một từ từ chữ thường thành chữ hoa, bạn sẽ gặp lỗi trong mã của mình:

#try and change lowercase 'p' to uppercase 'P'
fave_language = "python"
fave_language[0] = "P"

print(fave_language)

#the output will be an error message
#fave_language[0] = "P"
#TypeError: 'str' object does not support item assignment

Tuy nhiên, bạn có thể gán lại một chuỗi khác bằng cách cập nhật biến, như sau:

fave_language = "python"
fave_language = "Python"

print(fave_language)

#output
#Python

Một danh sách là một tập hợp dữ liệu có thứ tự.

Nhiều mục (thường có liên quan) được lưu trữ cùng nhau trong cùng một biến.

Bạn có thể tạo danh sách bằng cách đặt 0 hoặc nhiều mục trong dấu ngoặc vuông, []mỗi cái cách nhau bởi dấu phẩy.

Một danh sách có thể chứa bất kỳ kiểu dữ liệu dựng sẵn nào của Python.

# a list of numbers
my_numbers_list = [10,20,30,40,50]

print(my_numbers_list)

#output
# [10, 20, 30, 40, 50]

danh sách là có thể thay đổi.

Bạn có thể thay đổi các mục danh sách sau khi danh sách đã được tạo. Điều này có nghĩa là bạn có thể sửa đổi các mục hiện có, thêm các mục mới hoặc xóa các mục bất kỳ lúc nào trong suốt vòng đời của chương trình.

programming_languages = ["Javascript", "Python", "Java"]

#update the 1st item in the list
programming_languages[0] = "JavaScript"

print(programming_languages)

#output
#['JavaScript', 'Python', 'Java']

Cách xác định kiểu dữ liệu của một đối tượng trong Python

Để tìm kiểu dữ liệu của một đối tượng trong Python, hãy sử dụng công cụ tích hợp sẵn type() hàm, có cú pháp như sau:

type(object)

#where object is the object you need to find the data type of

Các type() hàm sẽ trả về loại đối tượng được truyền làm đối số cho hàm.

Đọc thêm  Cách thực hiện phân loại với Máy học tự động (AutoML)

Điều này thường được sử dụng cho mục đích gỡ lỗi.

Hãy xem cách sử dụng type() với các chuỗi và danh sách trong ví dụ dưới đây:

my_name = "John Doe"
my_lucky_numbers = [7,14,33]

print(type(my_name))
print(type(my_lucky_numbers))

#output
#<class 'str'>
#<class 'list'>

Cách chuyển đổi một chuỗi thành danh sách các ký tự riêng lẻ

Bạn có thể lấy một từ và biến nó thành một danh sách.

Mỗi ký tự đơn lẻ tạo nên từ đó sẽ trở thành một phần tử riêng lẻ và riêng biệt trong danh sách.

Ví dụ: hãy lấy văn bản “Python”.

Bạn có thể chuyển đổi nó thành một danh sách các ký tự, trong đó mỗi mục danh sách sẽ là mọi ký tự tạo nên chuỗi “Python”.

Điều này có nghĩa là P ký tự sẽ là một mục danh sách, y ký tự sẽ là một mục danh sách khác, t ký tự sẽ là một ký tự khác, v.v.

Cách đơn giản nhất là nhập truyền chuỗi vào danh sách.

Tyepcasting có nghĩa là chuyển đổi trực tiếp từ kiểu dữ liệu này sang kiểu dữ liệu khác – trong trường hợp này là từ kiểu dữ liệu chuỗi sang kiểu dữ liệu danh sách.

Bạn làm điều này bằng cách sử dụng tích hợp sẵn list() hàm và chuyển chuỗi đã cho làm đối số cho hàm.

programming_language = "Python"

programming_language_list = list(programming_language)

print(programming_language_list)

#output
#['P', 'y', 't', 'h', 'o', 'n']

Hãy xem một ví dụ khác:

current_routine = " Learning Python ! "

current_routine_list = list(current_routine)

print(current_routine_list)

#output
#[' ', 'L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!', ' ']

văn bản " Learning Python ! " có cả khoảng trắng ở đầu và ở cuối, khoảng trắng giữa từ “Học” và “Python” và khoảng trắng giữa từ “Python” và dấu chấm than.

Khi chuỗi được chuyển đổi thành danh sách các ký tự, mọi khoảng trắng được coi là một ký tự riêng lẻ và đó là lý do tại sao bạn thấy các khoảng trống, ' 'như các mục danh sách.

Để chỉ xóa khoảng trắng ở đầu và cuối chuỗi, hãy sử dụng strip() phương pháp.

current_routine = " Learning Python ! "

#the leading and trailing whitespace will no longer be separate elements in the list
current_routine_list = list(current_routine.strip())

print(current_routine_list)

#output
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', ' ', 'P', 'y', 't', 'h', 'o', 'n', ' ', '!']

Để loại bỏ tất cả các và không chỉ khoảng trắng ở đầu và cuối và làm cho nó không có ký tự khoảng trắng nào được đưa vào danh sách mới, hãy sử dụng replace() phương pháp thay thế:

current_routine = " Learning Python ! "

#replace every instance of whitespace with no space
current_routine_list = list(current_routine.replace(" ", ""))

print(current_routine_list)

#output
#['L', 'e', 'a', 'r', 'n', 'i', 'n', 'g', 'P', 'y', 't', 'h', 'o', 'n', '!']

Cách chuyển đổi một chuỗi thành một danh sách các từ

Một cách khác để chuyển đổi một chuỗi thành một danh sách là sử dụng split() Phương pháp Python.

Các split() phương pháp tách một chuỗi thành một danh sách, trong đó mỗi mục danh sách là mỗi từ tạo nên chuỗi.

Đọc thêm  Cách chức năng Python Lambda hoạt động – Giải thích bằng các ví dụ

Mỗi từ sẽ là một mục danh sách riêng lẻ.

Phân tích cú pháp của split() Phương thức trong Python

Cú pháp chung cho split() phương pháp như sau:

string.split(separator=None, maxsplit=-1)

Hãy chia nhỏ nó ra:

  • string là chuỗi đã cho mà bạn muốn chuyển thành danh sách.
  • Các split() phương thức biến một chuỗi thành một danh sách. Phải mất hai không bắt buộc thông số.
  • separator là tham số tùy chọn đầu tiên và nó xác định vị trí chuỗi sẽ phân tách. Theo mặc định, dấu phân cách là khoảng trắng và chuỗi sẽ phân tách ở bất cứ đâu có bất kỳ khoảng trắng nào.
  • maxsplit là tham số tùy chọn thứ hai. Nó chỉ định số lần phân tách tối đa để thực hiện. Giá trị mặc định, -1có nghĩa là nó phân tách trên toàn bộ chuỗi và không có giới hạn nào đối với việc phân tách.

Hãy xem một ví dụ về cách nó hoạt động.

phrase = "I am learning Python !"

print(type(phrase))

#output
#<class 'str'>

Trong chuỗi trên, mỗi từ tạo thành chuỗi được phân tách bằng khoảng trắng.

Để biến chuỗi đó thành một danh sách các từ, hãy sử dụng split() phương pháp.

Bạn không cần chỉ định dấu phân cách hoặc dấu maxsplit tham số, vì chúng tôi muốn phân tách tất cả các từ ở bất kỳ đâu có khoảng trắng giữa chúng.

phrase = "I am learning Python !"

phrase_to_list = phrase.split()

print(phrase_to_list)
print(type(phrase_to_list))


#output
#['I', 'am', 'learning', 'Python', '!']
#<class 'list'>

Chuỗi được phân chia dựa trên vị trí có bất kỳ khoảng trắng nào và mỗi từ tạo thành chuỗi biến thành một mục danh sách riêng lẻ.

Làm thế nào để sử dụng split() phương pháp với Dấu phân cách

Bạn cũng có thể chuyển đổi một chuỗi thành một danh sách bằng dấu tách với split() phương pháp. Dấu phân cách có thể là bất kỳ ký tự nào bạn chỉ định.

Chuỗi sẽ phân tách dựa trên dấu tách bạn cung cấp.

Ví dụ: bạn có thể sử dụng dấu phẩy, ,làm dấu phân cách.

Chuỗi sẽ chuyển thành danh sách bất cứ khi nào có dấu phẩy, bắt đầu từ bên trái.

Các mục được phân tách bằng dấu phẩy sẽ là các mục danh sách riêng lẻ.

Hãy lấy chuỗi sau:

phrase = "Hello world,I am learning Python!"

Có dấu phẩy ngăn cách Hello world từ I am learning Python!.

Nếu chúng tôi muốn sử dụng dấu phẩy đó làm dấu phân cách để tạo hai mục danh sách riêng lẻ, chúng tôi sẽ thực hiện như sau:

phrase = "Hello world,I am learning Python!"

phrase_to_list = phrase.split(",")

print(phrase_to_list)

#output
#['Hello world', 'I am learning Python!']

Hai mục riêng biệt đã được tạo dưới dạng các mục danh sách và sự phân tách xảy ra khi có dấu phẩy.

Một ví dụ khác có thể là tách một tên miền, bất cứ khi nào có dấu chấm, ..

domain_name = "www.freecodecamp.org"

domain_name_list = domain_name.split(".")

print(domain_name_list)

#output
#['www', 'freecodecamp', 'org']

Mỗi khi có một dấu chấm, một mục danh sách mới sẽ được thêm vào danh sách.

Làm thế nào để sử dụng split() phương pháp với maxsplit tham số

Như đã đề cập trước đây, maxsplit là tham số tùy chọn của split() phương pháp.

Nó xác định có bao nhiêu phần tử của danh sách sẽ được chia nhỏ và biến thành các mục danh sách riêng lẻ. Theo mặc định, nó được đặt thành -1có nghĩa là tất cả các phần tử tạo nên chuỗi sẽ bị tách ra.

Đọc thêm  Cách cài đặt Python 3 trên Mac và cập nhật phiên bản bằng Pyenv – Hướng dẫn lệnh MacOS Homebrew

Nhưng chúng ta có thể thay đổi giá trị thành một số cụ thể.

Để chỉ tách hai từ chứ không phải từng từ, chúng tôi đặt maxsplit tới hai:

current_routine = "I enjoy learning Python everyday"

current_routine_list = current_routine.split(maxsplit=2)

print(current_routine_list)

#output
#['I', 'enjoy', 'learning Python everyday']

maxsplit được đặt thành 2, có nghĩa là chỉ có tối đa hai từ sẽ được phân chia bằng dấu cách và sẽ tạo thành hai mục danh sách riêng lẻ. Mục danh sách thứ ba sẽ là phần còn lại của các từ tạo nên chuỗi ban đầu.

Sử dụng một ví dụ khác từ phần trên, bạn có thể kết hợp dấu phân cách với maxsplit để thực hiện chuyển đổi được nhắm mục tiêu của một chuỗi thành danh sách:

domain_name = "www.freecodecamp.org"

domain_name_list = domain_name.split(".", maxsplit=1)

print(domain_name_list)

#output
#['www', 'freecodecamp.org']

Trong ví dụ này, dấu phân cách là dấu chấm và chỉ phần tử đầu tiên được tách.

Các số được coi là chuỗi khi chúng được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép.

Giả sử bạn có ngày sinh được lưu trữ dưới dạng một chuỗi, chẳng hạn như:

birthdate = "19/10/1993"

print(type(birthdate))

#output
#<class 'str'>

Để loại bỏ các dấu gạch chéo và lưu trữ các số được liên kết với ngày, tháng và năm sinh dưới dạng các mục danh sách riêng biệt, bạn sẽ thực hiện như sau:

birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

print(birthdate_list)
print(type(birthdate_list))

#output
#['19', '10', '1993']
#<class 'list'>

Trong ví dụ, dấu phân cách là dấu gạch chéo, /và bất cứ khi nào có dấu gạch chéo, một mục danh sách mới sẽ được tạo.

Nếu bạn xem kỹ kết quả đầu ra, bạn sẽ thấy rằng các mục trong danh sách vẫn là các chuỗi, vì chúng được bao quanh bởi các dấu nháy đơn và không có chuyển đổi loại.

Để chuyển đổi từng mục danh sách từ một chuỗi thành một số nguyên, hãy sử dụng map chức năng.

Các map hàm nhận hai đối số:

  • Một chức năng. Trong trường hợp này, chức năng sẽ là int chức năng.
  • Một iterable, là một chuỗi hoặc tập hợp các mục. Trong trường hợp này, iterable là danh sách chúng tôi đã tạo.
birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

str_to_int = (map(int, birthdate_list))

print(str_to_int)

#output
#<map object at 0x10e289960>

Đó không phải là đầu ra chính xác mà chúng tôi muốn. Khi chúng tôi kiểm tra loại dữ liệu, chúng tôi thấy rằng chúng tôi không còn danh sách nữa:

print(type(str_to_int))

#output
#<class 'map'>

Để sửa lỗi này, thay vào đó chúng ta cần quay lại và thêm list() chức năng trước khi chuyển đổi:

birthdate = "19/10/1993"

birthdate_list = birthdate.split("/")

str_to_int = list(map(int, birthdate_list))

print(type(str_to_int))
print(str_to_int)

#output
#<class 'list'>
#[19, 10, 1993]

Phần kết luận

Và bạn có nó rồi đấy! Bây giờ bạn đã biết một số cách để chuyển đổi một chuỗi thành một danh sách trong Python.

Để tìm hiểu thêm về ngôn ngữ lập trình Python, hãy xem Chứng chỉ Máy tính Khoa học với Python của freeCodeCamp.

Bạn sẽ bắt đầu từ những điều cơ bản và học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học được.

Cảm ơn đã đọc và mã hóa hạnh phúc!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status