Hướng dẫn how do you combine phrases in python? - làm thế nào để bạn kết hợp các cụm từ trong python?

Tôi đang cố gắng tham gia các câu riêng biệt vào một đối tượng văn bản để tôi có thể chạy nó qua trình tạo Gensim. Để nó hoạt động, cần phải có ít nhất 2 câu. Theo đầu ra của tôi, có vẻ như tôi có nhiều hơn hai câu nhưng nó nói rằng đầu vào của tôi ít hơn 2 câu.

Tôi đã thử rất nhiều phương thức chuỗi và có vẻ như trình tóm tắt Gensim không nhận được toàn bộ văn bản được nối mà thay vào đó, nó nhìn vào mỗi câu của chính nó.

MÃ CỦA TÔI:

if w in ws:
 bc= ''.join([w for w in background_corpora])
#print(bc)
if len(bc.split('. '))<= 4:
bc_text= '.'.join(bc.split('\n'))
print(bc_text)
print("Background Content: {} ".format(summarize(bc_text))

THÔNG BÁO LỖI:

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence

Phương thức tham gia (chuỗi) tham gia các phần tử và trả về chuỗi kết hợp. Các phương thức tham gia kết hợp mọi yếu tố của chuỗi.join(sequence) method joins elements and returns the combined string. The join methods combines every element of the sequence.

Kết hợp danh sách các từ?

Kết hợp chúng vào một câu với phương thức tham gia (trình tự). Phương pháp được gọi trên một chuỗi SEPERATOR, có thể là bất cứ thứ gì từ không gian đến dấu gạch ngang.join(sequence) method. The method is called on a seperator string, which can be anything from a space to a dash.

Điều này dễ dàng hơn so với việc sử dụng toán tử cộng cho mỗi từ, điều này sẽ nhanh chóng trở nên tẻ nhạt với một danh sách dài các từ.

Khóa học liên quan: Khóa học & Bài tập lập trình Python hoàn chỉnh Complete Python Programming Course & Exercises

Thí dụ

Phương thức tham gia lấy một chuỗi làm đối số. Trình tự được viết dưới dạng đối số duy nhất: bạn cần thêm dấu ngoặc xung quanh chuỗi.

Nếu bạn thích, bạn có thể vượt qua một biến giữ chuỗi làm đối số. Điều này làm cho nó dễ đọc hơn. Chúng tôi sẽ sử dụng một không gian một chuỗi SEPERATOR trong ví dụ dưới đây.

Hãy thử chương trình dưới đây:

1
2
3
4
5
6
7
8
9
10

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)

Bạn sẽ thấy đầu ra này:

Hướng dẫn how do you combine phrases in python? - làm thế nào để bạn kết hợp các cụm từ trong python?

Nó cũng có thể tham gia một danh sách các từ:

1
2
3
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)

Nếu bạn là người mới bắt đầu, thì tôi đánh giá cao cuốn sách này.

Tập thể dục

Hãy thử các bài tập dưới đây

  1. Tạo một danh sách các từ và tham gia chúng, giống như ví dụ trên.
  2. Hãy thử thay đổi chuỗi SEPERATOR từ một không gian thành dấu gạch dưới.

Tải xuống ví dụ

Có một vài đảm bảo trong cuộc sống: cái chết, thuế và lập trình viên cần phải đối phó với các chuỗi. Chuỗi có thể có nhiều hình thức. Chúng có thể là văn bản không cấu trúc, tên người dùng, mô tả sản phẩm, tên cột cơ sở dữ liệu hoặc thực sự bất cứ điều gì khác mà chúng tôi mô tả bằng ngôn ngữ.

Với sự gần như của dữ liệu chuỗi, điều quan trọng là phải thành thạo các công cụ của giao dịch khi nói đến chuỗi. May mắn thay, Python làm cho thao tác chuỗi rất đơn giản, đặc biệt là khi so sánh với các ngôn ngữ khác và thậm chí các phiên bản cũ của Python.

Trong bài viết này, bạn sẽ tìm hiểu một số hoạt động chuỗi cơ bản nhất: chia tách, nối và tham gia. Bạn không chỉ học cách sử dụng các công cụ này, mà bạn sẽ bỏ đi với sự hiểu biết sâu sắc hơn về cách chúng hoạt động dưới mui xe. Not only will you learn how to use these tools, but you will walk away with a deeper understanding of how they work under the hood.

Chuỗi phân tách

Trong Python, các chuỗi được biểu diễn dưới dạng các đối tượng

1
2
3
4
5
6
7
8
9
10
1, điều này là bất biến: điều này có nghĩa là đối tượng được biểu thị trong bộ nhớ không thể được thay đổi trực tiếp. Hai sự thật này có thể giúp bạn học (và sau đó nhớ) cách sử dụng
1
2
3
4
5
6
7
8
9
10
2.immutable: this means that the object as represented in memory can not be directly altered. These two facts can help you learn (and then remember) how to use
1
2
3
4
5
6
7
8
9
10
2.

Bạn đã đoán làm thế nào hai tính năng của chuỗi liên quan đến chức năng phân tách trong Python? Nếu bạn đoán rằng

1
2
3
4
5
6
7
8
9
10
2 là một phương thức thể hiện vì chuỗi là một loại đặc biệt, bạn sẽ đúng! Trong một số ngôn ngữ khác (như Perl), chuỗi gốc đóng vai trò là đầu vào cho hàm
1
2
3
4
5
6
7
8
9
10
2 độc lập chứ không phải là một phương thức được gọi trên chính chuỗi.instance method because strings are a special type, you would be correct! In some other languages (like Perl), the original string serves as an input to a standalone
1
2
3
4
5
6
7
8
9
10
2 function rather than a method called on the string itself.

Điều gì về tính bất biến chuỗi? Điều này sẽ nhắc nhở bạn rằng các phương thức chuỗi không phải là hoạt động tại chỗ, nhưng chúng trả về một đối tượng mới trong bộ nhớ.in-place operations, but they return a new object in memory.

Chia tách mà không có thông số

Trước khi đi sâu hơn, hãy để Lôi nhìn vào một ví dụ đơn giản:

>>>

>>> 'this is my string'.split()
['this', 'is', 'my', 'string']

Đây thực sự là một trường hợp đặc biệt của một cuộc gọi

1
2
3
4
5
6
7
8
9
10
2 mà tôi đã chọn cho sự đơn giản của nó. Không có bất kỳ bộ phân cách nào được chỉ định,
1
2
3
4
5
6
7
8
9
10
2 sẽ đếm bất kỳ khoảng trắng nào làm dấu phân cách.

Một tính năng khác của cuộc gọi trần đến

1
2
3
4
5
6
7
8
9
10
2 là nó tự động cắt bỏ khoảng trắng hàng đầu và dấu vết, cũng như khoảng trắng liên tiếp. So sánh cuộc gọi
1
2
3
4
5
6
7
8
9
10
2 trên chuỗi sau mà không có tham số phân tách và với
1
2
3
4
5
6
7
8
9
10
9 làm tham số phân tách:

>>>

>>> s = ' this   is  my string '
>>> s.split()
['this', 'is', 'my', 'string']
>>> s.split(' ')
['', 'this', '', '', 'is', '', 'my', 'string', '']

Điều đầu tiên cần chú ý là điều này thể hiện tính bất biến của các chuỗi trong Python: các cuộc gọi tiếp theo đến

1
2
3
4
5
6
7
8
9
10
2 hoạt động trên chuỗi ban đầu, không phải trong danh sách kết quả của cuộc gọi đầu tiên đến
1
2
3
4
5
6
7
8
9
10
2.

Cái thứ hai và thứ chính mà bạn nên thấy là cuộc gọi trần

1
2
3
4
5
6
7
8
9
10
2 sẽ trích xuất các từ trong câu và loại bỏ bất kỳ khoảng trắng nào.

Chỉ định phân tách


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
3, mặt khác, theo nghĩa đen hơn nhiều. Khi có các dấu phân cách dẫn đầu hoặc theo dõi, bạn sẽ nhận được một chuỗi trống, mà bạn có thể thấy trong các yếu tố đầu tiên và cuối cùng của danh sách kết quả.

Trường hợp có nhiều bộ phân cách liên tiếp (chẳng hạn như giữa các trò chơi này và và là một trong những người đầu tiên và giữa đó như dây trống.

Hạn chế chia tách với MaxSplit

1
2
3
4
5
6
7
8
9
10
2 có một tham số tùy chọn khác được gọi là

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5. Theo mặc định,
1
2
3
4
5
6
7
8
9
10
2 sẽ thực hiện tất cả các chia tách có thể khi được gọi. Tuy nhiên, khi bạn đưa ra một giá trị cho

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5, chỉ có số lượng chia tách đã cho. Sử dụng chuỗi ví dụ trước của chúng tôi, chúng ta có thể thấy

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 trong hành động:

>>>

>>> s = "this is my string"
>>> s.split(maxsplit=1)
['this', 'is my string']

Như bạn thấy ở trên, nếu bạn đặt


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 thành
1
2
3
0, vùng trắng đầu tiên được sử dụng làm dấu phân cách và phần còn lại bị bỏ qua. Hãy cùng làm một số bài tập để kiểm tra mọi thứ chúng tôi đã học được cho đến nay.

Điều gì xảy ra khi bạn đưa ra một số âm dưới dạng tham số


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5?

1
2
3
4
5
6
7
8
9
10
2 sẽ phân chia chuỗi của bạn trên tất cả các dấu phân cách có sẵn, đây cũng là hành vi mặc định khi

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 được đặt.

Gần đây bạn đã được trao một tệp giá trị phân tách dấu phẩy (CSV) được định dạng khủng khiếp. Công việc của bạn là trích xuất từng hàng vào một danh sách, với mỗi yếu tố của danh sách đó đại diện cho các cột của tệp đó. Điều gì làm cho nó được định dạng xấu? Trường địa chỉ trên mạng bao gồm nhiều dấu phẩy nhưng cần được thể hiện trong danh sách dưới dạng một yếu tố duy nhất!

Giả sử rằng tệp của bạn đã được tải vào bộ nhớ dưới dạng chuỗi đa dòng sau:

Name,Phone,Address
Mike Smith,15554218841,123 Nice St, Roy, NM, USA
Anita Hernandez,15557789941,425 Sunny St, New York, NY, USA
Guido van Rossum,315558730,Science Park 123, 1098 XG Amsterdam, NL

Đầu ra của bạn phải là một danh sách các danh sách:

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
0

Mỗi danh sách bên trong đại diện cho các hàng của CSV mà chúng tôi quan tâm, trong khi danh sách bên ngoài giữ tất cả lại với nhau.

Đây là giải pháp của tôi. Có một vài cách để tấn công này. Điều quan trọng là bạn đã sử dụng

1
2
3
4
5
6
7
8
9
10
2 với tất cả các tham số tùy chọn của nó và có đầu ra dự kiến:

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
1

Chúng tôi gọi

1
2
3
4
5
6
7
8
9
10
2 hai lần ở đây. Cách sử dụng đầu tiên có thể trông đáng sợ, nhưng đừng lo lắng! Chúng tôi sẽ bước qua nó, và bạn sẽ cảm thấy thoải mái với những biểu cảm như thế này. Hãy cùng một cái nhìn khác về cuộc gọi
1
2
3
4
5
6
7
8
9
10
2 đầu tiên:
1
2
3
7.

Phần tử đầu tiên là

1
2
3
8, đây chỉ là biến chỉ vào chuỗi đầu vào của bạn. Sau đó, chúng tôi có cuộc gọi
1
2
3
4
5
6
7
8
9
10
2 của chúng tôi:
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
0. Ở đây, chúng tôi đang chia tách trên một nhân vật đặc biệt gọi là nhân vật Newline.newline character.

words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
1 làm gì? Như tên gọi, nó cho biết bất cứ điều gì đang đọc chuỗi mà mọi ký tự sau khi nó nên được hiển thị trên dòng tiếp theo. Trong một chuỗi đa dòng như
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
2 của chúng tôi, có một
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
1 ẩn ở cuối mỗi dòng.

Phần cuối cùng có thể là mới:

words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
4. Tuyên bố cho đến nay cung cấp cho chúng tôi một danh sách mới trong bộ nhớ và
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
4 trông giống như một ký hiệu chỉ mục danh sách, và nó là một trò chơi! Ký hiệu chỉ số mở rộng này cho chúng ta một lát cắt danh sách. Trong trường hợp này, chúng tôi lấy phần tử tại Index
1
2
3
0 và mọi thứ sau khi nó, loại bỏ phần tử tại Index
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
7.

Trong tất cả, chúng tôi lặp lại thông qua một danh sách các chuỗi, trong đó mỗi phần tử đại diện cho từng dòng trong chuỗi đầu vào đa dòng ngoại trừ dòng đầu tiên.

Ở mỗi chuỗi, chúng tôi gọi

1
2
3
4
5
6
7
8
9
10
2 lại bằng cách sử dụng
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
9 làm ký tự chia, nhưng lần này chúng tôi đang sử dụng

firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 để chỉ chia trên hai dấu phẩy đầu tiên, để lại địa chỉ. Sau đó, chúng tôi nối kết quả của cuộc gọi đó đến mảng
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
1 được đặt tên một cách khéo léo và trả lại cho người gọi.

Kết nối và nối các chuỗi

Hoạt động chuỗi cơ bản khác trái ngược với các chuỗi phân tách: nối chuỗi. Nếu bạn thiên đường nhìn thấy từ này, đừng lo lắng. Nó chỉ là một cách lạ mắt để nói về việc dán mắt nhau.concatenation. If you haven’t seen this word, don’t worry. It’s just a fancy way of saying “gluing together.”

Kết hợp với toán tử >>> 'this is my string'.split() ['this', 'is', 'my', 'string'] 2

Có một vài cách để làm điều này, tùy thuộc vào những gì bạn đang cố gắng đạt được. Phương pháp đơn giản nhất và phổ biến nhất là sử dụng ký hiệu cộng (

>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
2) để thêm nhiều chuỗi lại với nhau. Chỉ cần đặt một
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
2 giữa nhiều chuỗi như bạn muốn tham gia cùng nhau:

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
2

Như bạn thấy ở trên, nếu bạn đặt


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 thành
1
2
3
0, vùng trắng đầu tiên được sử dụng làm dấu phân cách và phần còn lại bị bỏ qua. Hãy cùng làm một số bài tập để kiểm tra mọi thứ chúng tôi đã học được cho đến nay.

Điều gì xảy ra khi bạn đưa ra một số âm dưới dạng tham số


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5?

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
3

Như bạn thấy ở trên, nếu bạn đặt


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5 thành
1
2
3
0, vùng trắng đầu tiên được sử dụng làm dấu phân cách và phần còn lại bị bỏ qua. Hãy cùng làm một số bài tập để kiểm tra mọi thứ chúng tôi đã học được cho đến nay.

Điều gì xảy ra khi bạn đưa ra một số âm dưới dạng tham số


firstname = "Bugs"
lastname = "Bunny"


sequence = (firstname,lastname)


name = " ".join(sequence)
print(name)
5?

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
4

Điều này là do bạn chỉ có thể nối các chuỗi với các chuỗi khác, có thể là hành vi mới đối với bạn nếu bạn đến từ một ngôn ngữ như JavaScript, cố gắng thực hiện chuyển đổi loại ngầm.

Đi từ danh sách đến một chuỗi trong Python với >>> 'this is my string'.split() ['this', 'is', 'my', 'string'] 8

Có một cách khác, mạnh mẽ hơn, để tham gia các chuỗi với nhau. Bạn có thể đi từ danh sách đến một chuỗi trong Python với phương thức

>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
9.

Trường hợp sử dụng phổ biến ở đây là khi bạn có một trò chơi có thể điều chỉnh được như một danh sách mà các chuỗi đã tạo ra và bạn muốn kết hợp các chuỗi đó thành một chuỗi. Giống như

1
2
3
4
5
6
7
8
9
10
2,
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8 là phương thức thể hiện chuỗi. Nếu tất cả các chuỗi của bạn đều ở trong một điều có thể, bạn gọi cái nào
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8?

Đây là một chút câu hỏi lừa. Hãy nhớ rằng khi bạn sử dụng

1
2
3
4
5
6
7
8
9
10
2, bạn gọi nó trên chuỗi hoặc ký tự bạn muốn chia tay. Hoạt động ngược lại là
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8, vì vậy bạn gọi nó trên chuỗi hoặc ký tự bạn muốn sử dụng để kết hợp các chuỗi có thể lặp lại với nhau:

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
5

Tại đây, chúng tôi tham gia từng yếu tố của danh sách

>>> s = ' this   is  my string '
>>> s.split()
['this', 'is', 'my', 'string']
>>> s.split(' ')
['', 'this', '', '', 'is', '', 'my', 'string', '']
5 với dấu phẩy (
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
9) và gọi
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8 trên nó thay vì danh sách
>>> s = ' this   is  my string '
>>> s.split()
['this', 'is', 'my', 'string']
>>> s.split(' ')
['', 'this', '', '', 'is', '', 'my', 'string', '']
5.

Làm thế nào bạn có thể làm cho văn bản đầu ra dễ đọc hơn?

Một điều bạn có thể làm là thêm khoảng cách:

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
6

Bằng cách không làm gì khác hơn là thêm một không gian vào chuỗi tham gia của chúng tôi, chúng tôi đã cải thiện rất nhiều khả năng đọc đầu ra của chúng tôi. Đây là điều bạn nên luôn luôn ghi nhớ khi tham gia các chuỗi cho khả năng đọc của con người.

>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8 thông minh ở chỗ nó chèn người tham gia của bạn ở giữa các chuỗi trong điều kiện mà bạn muốn tham gia, thay vì chỉ thêm trình nối của bạn ở cuối mỗi chuỗi trong điều kiện. Điều này có nghĩa là nếu bạn vượt qua một kích thước
1
2
3
0, bạn đã thắng được khi thấy người tham gia của bạn:

>>>

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
7

Sử dụng hướng dẫn quét web của chúng tôi, bạn đã xây dựng một máy cạo thời tiết tuyệt vời. Tuy nhiên, nó tải thông tin chuỗi trong danh sách danh sách, mỗi danh sách chứa một hàng thông tin duy nhất bạn muốn viết vào tệp CSV:

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
8

Đầu ra của bạn phải là một chuỗi duy nhất trông như thế này:

`raise ValueError("input must have more than one sentence")
ValueError: input must have more than one sentence
9

Đối với giải pháp này, tôi đã sử dụng một danh sách hiểu, đây là một tính năng mạnh mẽ của Python cho phép bạn xây dựng danh sách nhanh chóng. Nếu bạn muốn tìm hiểu thêm về chúng, hãy xem bài viết tuyệt vời này bao gồm tất cả các toàn diện có sẵn trong Python.

Dưới đây là giải pháp của tôi, bắt đầu với một danh sách các danh sách và kết thúc bằng một chuỗi duy nhất:

1
2
3
4
5
6
7
8
9
10
0

Ở đây chúng tôi sử dụng

>>> 'this is my string'.split()
['this', 'is', 'my', 'string']
8 không chỉ một lần, mà là hai lần. Đầu tiên, chúng tôi sử dụng nó trong danh sách hiểu, công việc kết hợp tất cả các chuỗi trong mỗi danh sách bên trong thành một chuỗi. Tiếp theo, chúng tôi tham gia từng chuỗi này với ký tự mới
words = ["How","are","you","doing","?"]
sentence = ' '.join(words)
print(sentence)
1 mà chúng tôi đã thấy trước đó. Cuối cùng, chúng tôi chỉ cần in kết quả để chúng tôi có thể xác minh rằng đó là như chúng tôi mong đợi.

Buộc tất cả lại với nhau

Mặc dù điều này kết thúc tổng quan này về các hoạt động chuỗi cơ bản nhất trong Python (chia tách, nối và nối), nhưng vẫn có toàn bộ vũ trụ của các phương thức chuỗi có thể giúp trải nghiệm của bạn với việc thao túng các chuỗi dễ dàng hơn nhiều.

Khi bạn đã thành thạo các hoạt động chuỗi cơ bản này, bạn có thể muốn tìm hiểu thêm. May mắn thay, chúng tôi có một số hướng dẫn tuyệt vời để giúp bạn hoàn thành việc làm chủ các tính năng của Python, cho phép thao tác chuỗi thông minh:

  • Python 3 Lừa F-Strings: Một cú pháp định dạng chuỗi được cải tiến
  • Chuỗi Python định dạng các thực tiễn tốt nhất
  • Chuỗi và dữ liệu ký tự trong Python