Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Tôi đang cố gắng chuyển đổi một chuỗi thành một danh sách các từ sử dụng Python. Tôi muốn lấy một cái gì đó như sau:

string = 'This is a string, with words!'

Sau đó chuyển đổi thành một cái gì đó như thế này:

list = ['This', 'is', 'a', 'string', 'with', 'words']

Lưu ý thiếu sót của dấu câu và không gian. Điều gì sẽ là cách nhanh nhất để đi về điều này?

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Hippietrail

15.2K18 Huy hiệu vàng96 Huy hiệu bạc149 Huy hiệu đồng18 gold badges96 silver badges149 bronze badges

Đã hỏi ngày 31 tháng 5 năm 2011 lúc 0:09May 31, 2011 at 0:09

hình chữ nhậtrectangletangle

48.5K91 Huy hiệu vàng199 Huy hiệu bạc273 Huy hiệu Đồng91 gold badges199 silver badges273 bronze badges

Tôi nghĩ rằng đây là cách đơn giản nhất cho bất kỳ ai khác vấp ngã trên bài đăng này được đưa ra phản hồi muộn:

>>> string = 'This is a string, with words!'
>>> string.split()
['This', 'is', 'a', 'string,', 'with', 'words!']

Đã trả lời ngày 6 tháng 12 năm 2012 lúc 0:22Dec 6, 2012 at 0:22

1

Thử cái này:

import re

mystr = 'This is a string, with words!'
wordList = re.sub("[^\w]", " ",  mystr).split()

Làm thế nào nó hoạt động:

Từ các tài liệu:

re.sub(pattern, repl, string, count=0, flags=0)

Trả về chuỗi thu được bằng cách thay thế các lần xuất hiện không chồng chéo bên trái của mẫu trong chuỗi bằng cách thay thế. Nếu mẫu được tìm thấy, chuỗi được trả về không thay đổi. REPLE có thể là một chuỗi hoặc một hàm.

Vì vậy, trong trường hợp của chúng tôi:

Mẫu là bất kỳ ký tự không phải là tổng số.

.

A đến Z, A đến Z, 0 đến 9 và nhấn mạnh.

Vì vậy, chúng tôi phù hợp với bất kỳ ký tự không phải là nguyên nhân và thay thế nó bằng một không gian.

Và sau đó chúng tôi chia () nó chia chuỗi theo không gian và chuyển đổi nó thành một danh sách

Vì vậy, 'Hello-world'

trở thành 'Hello World'

với re.sub

Và sau đó ['Xin chào', 'Thế giới']]

Sau khi chia ()

Hãy cho tôi biết nếu có bất kỳ nghi ngờ xuất hiện.

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:13May 31, 2011 at 0:13

BryanbryanBryan

6.3992 Huy hiệu vàng28 Huy hiệu bạc16 Huy hiệu đồng2 gold badges28 silver badges16 bronze badges

3

Để làm điều này đúng cách là khá phức tạp. Đối với nghiên cứu của bạn, nó được gọi là mã thông báo từ. Bạn nên nhìn vào NLTK nếu bạn muốn xem những gì người khác đã làm, thay vì bắt đầu từ đầu:

>>> import nltk
>>> paragraph = u"Hi, this is my first sentence. And this is my second."
>>> sentences = nltk.sent_tokenize(paragraph)
>>> for sentence in sentences:
...     nltk.word_tokenize(sentence)
[u'Hi', u',', u'this', u'is', u'my', u'first', u'sentence', u'.']
[u'And', u'this', u'is', u'my', u'second', u'.']

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:15May 31, 2011 at 0:15

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Tim McNamaratim McNamaraTim McNamara

17.7K4 Huy hiệu vàng51 Huy hiệu bạc82 Huy hiệu Đồng4 gold badges51 silver badges82 bronze badges

Cách đơn giản nhất:

>>> import re
>>> string = 'This is a string, with words!'
>>> re.findall(r'\w+', string)
['This', 'is', 'a', 'string', 'with', 'words']

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 2:19May 31, 2011 at 2:19

JbernardojbernardoJBernardo

31.3k10 Huy hiệu vàng88 Huy hiệu bạc113 Huy hiệu đồng10 gold badges88 silver badges113 bronze badges

Sử dụng

list = ['This', 'is', 'a', 'string', 'with', 'words']
9 cho tính đầy đủ:

import re
import string
x = re.sub('['+string.punctuation+']', '', s).split()

Điều này xử lý Newlines là tốt.

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:24May 31, 2011 at 0:24

MTRWMTRWmtrw

33K7 Huy hiệu vàng61 Huy hiệu bạc71 Huy hiệu đồng7 gold badges61 silver badges71 bronze badges

0

Vâng, bạn có thể sử dụng

import re
list = re.sub(r'[.!,;?]', ' ', string).split()

Lưu ý rằng cả

>>> string = 'This is a string, with words!'
>>> string.split()
['This', 'is', 'a', 'string,', 'with', 'words!']
0 và
>>> string = 'This is a string, with words!'
>>> string.split()
['This', 'is', 'a', 'string,', 'with', 'words!']
1 đều là tên của các loại tích hợp, vì vậy bạn có thể không muốn sử dụng chúng làm tên biến của bạn.

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Martineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:10May 31, 2011 at 0:10

CameroncameronCameron

93.7K23 Huy hiệu vàng194 Huy hiệu bạc221 Huy hiệu đồng23 gold badges194 silver badges221 bronze badges

Lấy cảm hứng từ câu trả lời của @MTRW, nhưng chỉ được cải thiện để loại bỏ dấu chấm câu tại các ranh giới từ:

import re
import string

def extract_words(s):
    return [re.sub('^[{0}]+|[{0}]+$'.format(string.punctuation), '', w) for w in s.split()]

>>> str = 'This is a string, with words!'
>>> extract_words(str)
['This', 'is', 'a', 'string', 'with', 'words']

>>> str = '''I'm a custom-built sentence with "tricky" words like https://stackoverflow.com/.'''
>>> extract_words(str)
["I'm", 'a', 'custom-built', 'sentence', 'with', 'tricky', 'words', 'like', 'https://stackoverflow.com']

Đã trả lời ngày 8 tháng 6 năm 2017 lúc 9:55Jun 8, 2017 at 9:55

user222758user222758user222758

12.8K13 Huy hiệu vàng72 Huy hiệu bạc95 Huy hiệu Đồng13 gold badges72 silver badges95 bronze badges

Một biểu thức thường xuyên cho các từ sẽ cho bạn quyền kiểm soát nhiều nhất. Bạn sẽ muốn xem xét cẩn thận cách đối phó với các từ với dấu gạch ngang hoặc dấu nháy đơn, như "Tôi".

Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:14May 31, 2011 at 0:14

Tofutimtofutimtofutim

21.8K20 Huy hiệu vàng83 Huy hiệu bạc146 Huy hiệu đồng20 gold badges83 silver badges146 bronze badges

Cá nhân, tôi nghĩ rằng điều này hơi sạch hơn các câu trả lời được cung cấp

list = ['This', 'is', 'a', 'string', 'with', 'words']
0

Đã trả lời ngày 18 tháng 5 năm 2018 lúc 5:47May 18, 2018 at 5:47

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

list = ['This', 'is', 'a', 'string', 'with', 'words']
1

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

Josliber ♦

43.4K12 Huy hiệu vàng97 Huy hiệu bạc133 Huy hiệu Đồng12 gold badges97 silver badges133 bronze badges

Đã trả lời ngày 11 tháng 8 năm 2015 lúc 15:14Aug 11, 2015 at 15:14

Bằng cách này, bạn loại bỏ mọi char đặc biệt bên ngoài bảng chữ cái:

list = ['This', 'is', 'a', 'string', 'with', 'words']
2

Tôi không chắc đây là điều này nhanh hay tối ưu hay thậm chí là đúng cách để lập trình.

Đã trả lời ngày 30 tháng 7 năm 2017 lúc 15:22Jul 30, 2017 at 15:22

list = ['This', 'is', 'a', 'string', 'with', 'words']
3

Hàm này sẽ trả về danh sách các từ của một chuỗi đã cho. Trong trường hợp này, nếu chúng ta gọi chức năng như sau,

list = ['This', 'is', 'a', 'string', 'with', 'words']
4

Đầu ra trả về của hàm sẽ là

list = ['This', 'is', 'a', 'string', 'with', 'words']
5

Đã trả lời ngày 4 tháng 2 lúc 12:43Feb 4 at 12:43

Đây là từ nỗ lực của tôi đối với một thử thách mã hóa không thể sử dụng regex,

list = ['This', 'is', 'a', 'string', 'with', 'words']
6

Vai trò của dấu nháy đơn có vẻ thú vị.

Đã trả lời ngày 28 tháng 5 năm 2015 lúc 6:30May 28, 2015 at 6:30

Có lẽ không thanh lịch lắm, nhưng ít nhất bạn biết những gì đang xảy ra.

list = ['This', 'is', 'a', 'string', 'with', 'words']
7

Đã trả lời ngày 15 tháng 3 năm 2021 lúc 20:03Mar 15, 2021 at 20:03

Hướng dẫn how do you convert sentences to words in python? - làm thế nào để bạn chuyển đổi câu thành từ trong python?

1

Bạn có thể thử và làm điều này:

list = ['This', 'is', 'a', 'string', 'with', 'words']
8

user222758

12.8K13 Huy hiệu vàng72 Huy hiệu bạc95 Huy hiệu Đồng13 gold badges72 silver badges95 bronze badges

Một biểu thức thường xuyên cho các từ sẽ cho bạn quyền kiểm soát nhiều nhất. Bạn sẽ muốn xem xét cẩn thận cách đối phó với các từ với dấu gạch ngang hoặc dấu nháy đơn, như "Tôi".Aug 12, 2013 at 13:49