Làm cách nào để tạo danh sách các chuỗi trong một chuỗi trong python?

Một chuỗi có thể được sử dụng làm dấu phân cách để nối danh sách các chuỗi lại với nhau thành một chuỗi bằng cách sử dụng phương thức join(). Ví dụ: bạn có thể tạo một chuỗi trong đó mỗi phần tử trong danh sách được phân tách bằng dấu cách

>>> " ".join(["once","upon","a","time"])
"once upon a time"

Ví dụ sau tách các phần tử chuỗi bằng ba dấu gạch nối

>>> "---".join(["once", "upon", "a", "time"])
"once---upon---a---time"

Nếu chúng ta muốn biến danh sách này thành một chuỗi duy nhất, chúng ta có thể chuyển nó đến hàm

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
2 tích hợp

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"

Nhưng kết quả chúng tôi nhận được có lẽ không phải là thứ chúng tôi đang tìm kiếm. Ít nhất là không nếu chúng tôi đang cố chuyển cái này cho người dùng cuối chứ không phải một lập trình viên khác

Vì vậy, chúng ta cần tự hỏi mình, chúng ta thực sự đang cố gắng làm gì ở đây?

Tham gia một danh sách các chuỗi với nhau

Nhiều ngôn ngữ lập trình có một phương thức

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5 mà bạn có thể gọi trên kiểu danh sách hoặc kiểu mảng, chuyển cho nó một dấu phân cách để nối tất cả các chuỗi trong danh sách đó lại với nhau bằng một dấu phân cách đã cho. Python không có cái này

>>> things.join(" ")
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'list' object has no attribute 'join'

Trong Python, loại danh sách của chúng tôi không có phương thức

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5. Thay vào đó, kiểu chuỗi của chúng ta có phương thức
>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5

________số 8_______

Ở đây, chúng tôi đã yêu cầu ký tự khoảng trắng (

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
8) vui lòng sử dụng chính nó làm dấu phân cách, kết hợp các mục trong danh sách các chuỗi mà chúng tôi đã chuyển cho nó

Chúng ta có thể sử dụng bất kỳ chuỗi nào làm dấu phân cách. Ví dụ: sử dụng

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
9 làm dấu phân cách sẽ đặt dấu phẩy và dấu cách giữa mỗi chuỗi này

>>> ", ".join(things)
'apples, ducks, lemons, cats, potatoes'

Hoặc một chuỗi trống (

>>> things.join(" ")
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'list' object has no attribute 'join'
0) sẽ không đặt gì giữa mỗi từ, nối tất cả chúng lại với nhau (làm mịn chúng lại với nhau thành một từ dài)

>>> "".join(things)
'applesduckslemonscatspotatoes'

Phương thức >>> str(things) "['apples', 'ducks', 'lemons', 'cats', 'potatoes']" 5 của Python sẽ chấp nhận mọi chuỗi có thể lặp lại

Tại sao Python làm theo cách này?

Python làm theo cách này vì mục đích linh hoạt

Trong Python, chúng tôi có rất nhiều loại iterables (không chỉ danh sách) và chúng tôi có xu hướng nghĩ về cách gõ vịt (nếu nó trông giống một con vịt và kêu quạc cạch như một con vịt, thì đó là một con vịt). Đó là, chúng tôi quan tâm đến hành vi (e. g. khả năng lặp lại) của một đối tượng thay vì loại của nó (e. g. danh sách)

Bởi vì phương thức

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5 thuộc loại chuỗi, chúng ta có thể truyền bất kỳ chuỗi lặp nào cho nó. Ví dụ, chúng ta có thể kết hợp một bộ chuỗi

>>> words = ("apple", "animal", "Australia")
>>> " ".join(words)
'apple animal Australia'

Hoặc chúng ta có thể kết hợp một đối tượng tệp (các đối tượng tệp có thể lặp lại trong Python và khi bạn lặp qua chúng, bạn sẽ nhận được các dòng)

>>> my_file = open("things.txt")
>>> "".join(my_file)
'apples\nducks\nlemons\ncats\npotatoes\n'

Chúng ta cũng có thể tham gia cùng nhau một

>>> my_file = open("things.txt")
>>> ", ".join(line.rstrip("\n") for line in my_file)
'apples, ducks, lemons, cats, potatoes'

Biểu thức trình tạo đó sẽ xóa các dòng mới ở cuối mỗi dòng trong một tệp và chúng tôi đang sử dụng phương thức chuỗi

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5 để nối các dòng đó với nhau bằng dấu phẩy và dấu cách

Chuyển đổi một lần lặp của các chuỗi không thành một chuỗi

Điều gì sẽ xảy ra nếu iterable mà chúng ta đang kết hợp với nhau không phải là iterable của chuỗi?

Khi chúng tôi cố gắng kết hợp một lần lặp các mục không phải là chuỗi, chúng tôi sẽ nhận được một

>>> things.join(" ")
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'list' object has no attribute 'join'
5

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> " ".join(numbers)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: sequence item 0: expected str instance, int found

Bởi vì chúng ta biết rằng phương thức

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
5 chấp nhận bất kỳ chuỗi nào có thể lặp lại, nên chúng ta có thể viết một biểu thức trình tạo để chuyển đổi từng mục của chúng ta thành một chuỗi bằng cách chuyển nó đến hàm
>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
2 tích hợp

>>> str(things)
"['apples', 'ducks', 'lemons', 'cats', 'potatoes']"
0

Vì vậy, ngay cả khi bạn đang làm việc với một chuỗi không có khả năng lặp lại, bạn có thể nối chúng lại với nhau miễn là trước tiên bạn thực hiện một chút tiền xử lý