Để chuyển đổi một chuỗi trong danh sách các từ, bạn chỉ cần chia nó trên khoảng trắng. Bạn có thể sử dụng split [] từ lớp chuỗi. Phân định mặc định cho phương pháp này là khoảng trắng, tức là khi được gọi trên một chuỗi, nó sẽ chia chuỗi đó ở các ký tự Whitespace.
Ví dụ
>>> "Please split this string".split[] ['Please', 'split', 'this', 'string']
Regex cũng có thể được sử dụng để giải quyết vấn đề này. Bạn có thể gọi phương thức re.split [] bằng cách sử dụng regex '\ s+' làm dấu phân cách. Lưu ý rằng phương pháp này chậm hơn phương thức trên.
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']
Cập nhật vào ngày 17 tháng 12 năm 2019 06:42:15
- Câu hỏi và câu trả lời liên quan
- Chương trình Python để chuyển đổi danh sách thành chuỗi
- Chuyển đổi danh sách thành chuỗi trong chương trình Python
- Python - Chuyển đổi danh sách chuỗi thành danh sách
- Làm thế nào để chuyển đổi biểu diễn chuỗi của danh sách thành danh sách trong Python?
- Chuyển đổi danh sách chuỗi thành danh sách danh sách trong Python
- Chương trình Python để chuyển đổi danh sách các ký tự thành chuỗi
- Chuyển đổi biểu diễn chuỗi của danh sách thành danh sách trong Python
- Làm thế nào để chuyển đổi danh sách thành chuỗi trong Python?
- Làm thế nào để chuyển đổi danh sách thành chuỗi trong C#?
- Chuyển đổi chuỗi thành danh sách các ký tự trong Java
- Chuyển đổi danh sách chuỗi thành chuỗi phân tách bằng dấu phẩy trong Java
- Làm thế nào để chuyển đổi danh sách các ký tự thành một chuỗi trong C#?
- Chuyển đổi danh sách chuỗi số thành danh sách các số nguyên trong Python
- Chuyển đổi danh sách kèm theo chuỗi thành danh sách trong Python
- Làm thế nào để chuyển đổi từ điển Python thành một danh sách?
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?
Hippietrail
15.1K17 Huy hiệu vàng96 Huy hiệu bạc148 Huy hiệu đồng17 gold badges96 silver badges148 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.1K91 Huy hiệu vàng198 Huy hiệu bạc273 Huy hiệu Đồng91 gold badges198 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.
Đã trả lời ngày 31 tháng 5 năm 2011 lúc 0:13May 31, 2011 at 0:13
BryanbryanBryan
6.3392 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
Tim McNamaratim McNamaraTim McNamara
17.6K4 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.2K10 Huy hiệu vàng87 Huy hiệu bạc111 Huy hiệu đồng10 gold badges87 silver badges111 bronze badges
Sử dụng
string = 'This is a string, with words!'
1 để hoàn thiện: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
32,8K7 Huy hiệu vàng60 Huy hiệu bạc70 Huy hiệu đồng7 gold badges60 silver badges70 bronze badges
0
Vâng, bạn có thể sử dụng
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']0
Lưu ý rằng cả
string = 'This is a string, with words!'
2 và string = 'This is a string, with words!'
3 đề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.
Martineau
Huy hiệu vàng 115K2525 gold badges160 silver badges284 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.4K21 Huy hiệu vàng194 Huy hiệu bạc221 Huy hiệu đồng21 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 >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']1
Đã trả lời ngày 8 tháng 6 năm 2017 lúc 9:55Jun 8, 2017 at 9:55
user222758user222758user222758
12.7K13 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.7K20 Huy hiệu vàng83 Huy hiệu bạc145 Huy hiệu Đồng20 gold badges83 silver badges145 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
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']2
Đã trả lời ngày 18 tháng 5 năm 2018 lúc 5:47May 18, 2018 at 5:47
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']3
Josliber ♦♦
43.4K12 Huy hiệu vàng96 Huy hiệu bạc132 Huy hiệu Đồng12 gold badges96 silver badges132 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:
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']4
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
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']5
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,
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']6
Đầu ra trả về của hàm sẽ là
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']7
Đã 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,
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']8
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.
>>> import re >>> re.split['\s+', 'Please split this string'] ['Please', 'split', 'this', 'string']9
Đã trả lời ngày 15 tháng 3 năm 2021 lúc 20:03Mar 15, 2021 at 20:03
1
Bạn có thể thử và làm điều này:
string = 'This is a string, with words!'
0
user222758
12.7K13 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