Hướng dẫn how do you change every instance of a word in python? - làm thế nào để bạn thay đổi mọi trường hợp của một từ trong python?

13

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Giả sử rằng tôi có câu sau:

bean likes to sell his beans

Và tôi muốn thay thế tất cả các từ của các từ cụ thể bằng các từ khác. Ví dụ: bean đến

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
0 và
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
1 đến
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
2.

Tôi không thể sử dụng

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
3 bởi vì trong trường hợp này, nó sẽ thay đổi
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
1 thành
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
5.

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'

Tôi chỉ cần thay đổi toàn bộ các từ, không phải là sự xuất hiện của từ trong từ khác. Tôi nghĩ rằng tôi có thể đạt được điều này bằng cách sử dụng các biểu thức thông thường nhưng không biết làm thế nào để làm đúng.

Hướng dẫn how do you change every instance of a word in python? - làm thế nào để bạn thay đổi mọi trường hợp của một từ trong python?

Bhargav Rao

47.4K27 Huy hiệu vàng122 Huy hiệu bạc137 Huy hiệu đồng27 gold badges122 silver badges137 bronze badges

Hỏi ngày 2 tháng 9 năm 2014 lúc 20:19Sep 2, 2014 at 20:19

FrozenheartfrozenheartFrozenHeart

19.1K32 Huy hiệu vàng111 Huy hiệu bạc232 Huy hiệu Đồng32 gold badges111 silver badges232 bronze badges

0

Nếu bạn sử dụng Regex, bạn có thể chỉ định các ranh giới từ với

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
6:

import re

sentence = 'bean likes to sell his beans'

sentence = re.sub(r'\bbean\b', 'robert', sentence)
# 'robert likes to sell his beans'

Ở đây 'Đậu' không thay đổi (thành 'Roberts') vì 'S' ở cuối không phải là ranh giới giữa các từ:

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
6 khớp với chuỗi trống, mà chỉ ở đầu hoặc cuối của một từ.

Sự thay thế thứ hai cho sự hoàn chỉnh:

sentence = re.sub(r'\bbeans\b', 'cars', sentence)
# 'robert likes to sell his cars'

Đã trả lời ngày 2 tháng 9 năm 2014 lúc 20:24Sep 2, 2014 at 20:24

Hướng dẫn how do you change every instance of a word in python? - làm thế nào để bạn thay đổi mọi trường hợp của một từ trong python?

Alex Rileyalex RileyAlex Riley

158K44 Huy hiệu vàng251 Huy hiệu bạc232 Huy hiệu Đồng44 gold badges251 silver badges232 bronze badges

2

Nếu bạn thay thế từng từ một lần, bạn có thể thay thế các từ nhiều lần (và không nhận được những gì bạn muốn). Để tránh điều này, bạn có thể sử dụng chức năng hoặc Lambda:

d = {'bean':'robert', 'beans':'cars'}
str_in = 'bean likes to sell his beans'
str_out = re.sub(r'\b(\w+)\b', lambda m:d.get(m.group(1), m.group(1)), str_in)

Theo cách đó, một khi bean được thay thế bằng

>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
0, nó sẽ không được sửa đổi nữa (ngay cả khi
>>> "bean likes to sell his beans".replace("bean","robert")
'robert likes to sell his roberts'
0 cũng nằm trong danh sách từ đầu vào của bạn).

Theo đề xuất của Georg, tôi đã chỉnh sửa câu trả lời này với

import re

sentence = 'bean likes to sell his beans'

sentence = re.sub(r'\bbean\b', 'robert', sentence)
# 'robert likes to sell his beans'
1. Giải pháp thay thế (cũng được đề xuất bởi Georg):georg, I edited this answer with
import re

sentence = 'bean likes to sell his beans'

sentence = re.sub(r'\bbean\b', 'robert', sentence)
# 'robert likes to sell his beans'
1. Alternative solution (also suggested by georg):

str_out = re.sub(r'\b(%s)\b' % '|'.join(d.keys()), lambda m:d.get(m.group(1), m.group(1)), str_in)

Đã trả lời ngày 2 tháng 9 năm 2014 lúc 20:38Sep 2, 2014 at 20:38

10

Đây là một cách bẩn thỉu để làm điều này. Sử dụng nếp gấp

reduce(lambda x,y : re.sub('\\b('+y[0]+')\\b',y[1],x) ,[("bean","robert"),("beans","cars")],"bean likes to sell his beans")

Đã trả lời ngày 3 tháng 11 năm 2015 lúc 4:08Nov 3, 2015 at 4:08

Akshay Hazariakshay HazariAkshay Hazari

3.0393 Huy hiệu vàng43 Huy hiệu bạc76 Huy hiệu đồng3 gold badges43 silver badges76 bronze badges

"bean likes to sell his beans".replace("beans", "cars").replace("bean", "robert")

Sẽ thay thế tất cả các trường hợp "đậu" bằng "xe hơi" và "đậu" bằng "robert". Điều này hoạt động vì

import re

sentence = 'bean likes to sell his beans'

sentence = re.sub(r'\bbean\b', 'robert', sentence)
# 'robert likes to sell his beans'
2 trả về một thể hiện được sửa đổi của chuỗi gốc. Như vậy, bạn có thể nghĩ về nó trong các giai đoạn. Nó về cơ bản hoạt động theo cách này:

 >>> first_string = "bean likes to sell his beans"
 >>> second_string = first_string.replace("beans", "cars")
 >>> third_string = second_string.replace("bean", "robert")
 >>> print(first_string, second_string, third_string)

 ('bean likes to sell his beans', 'bean likes to sell his cars', 
  'robert likes to sell his cars')

Đã trả lời ngày 2 tháng 9 năm 2014 lúc 20:22Sep 2, 2014 at 20:22

Kevin LondonKevin LondonKevin London

4.5341 Huy hiệu vàng20 Huy hiệu bạc26 Huy hiệu đồng1 gold badge20 silver badges26 bronze badges

1

Làm cách nào để thay đổi tất cả các trường hợp của một từ trong Python?

Python cung cấp các chức năng dễ dàng và đơn giản để xử lý chuỗi.Cách dễ nhất để thay thế tất cả các lần xuất hiện của một chuỗi con nhất định trong một chuỗi là sử dụng hàm thay thế ().use the replace() function.

Làm thế nào để bạn thay thế mọi thứ trong một chuỗi trong Python?

Cú pháp thay thế ()..
Cú pháp: String.replace (cũ, mới, đếm).
Parameters:.
Giá trị trả về: Nó trả về một bản sao của chuỗi trong đó tất cả các lần xuất hiện của một chuỗi con được thay thế bằng một chuỗi con khác ..

Làm thế nào để bạn thay thế nhiều ký tự trong Python?

Phương pháp 2: Thay thế nhiều ký tự bằng dịch () + maketrans ()

Có chức năng thay thế trong Python không?

Phương thức thay thế () là một chức năng tích hợp được cung cấp trong lập trình Python.Nó thay thế tất cả các lần xuất hiện của chuỗi con cũ bằng chuỗi con mới.Thay thế () trả về một chuỗi mới trong đó chất nền cũ được thay thế bằng chuỗi con mới.. It replaces all the occurrences of the old substring with the new substring. Replace() returns a new string in which old substring is replaced with the new substring.