Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

Tôi đang cố gắng xóa tất cả các chữ số khỏi một chuỗi. Tuy nhiên, mã tiếp theo sẽ xóa các chữ số cũng có trong bất kỳ từ nào và rõ ràng tôi không muốn điều đó. Tôi đã thử nhiều biểu cảm thường xuyên mà không thành công.

Thanks!


s = "This must not b3 delet3d, but the number at the end yes 134411"
s = re.sub("\d+", "", s)
print s

Result:

Điều này không được B Deletd, mà là số ở cuối có

Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

Siêu bão

4.7465 Huy hiệu vàng20 Huy hiệu bạc32 Huy hiệu Đồng5 gold badges20 silver badges32 bronze badges

Đã hỏi ngày 3 tháng 5 năm 2009 lúc 13:59May 3, 2009 at 13:59

0

Thêm một khoảng trống trước \ d+.

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '

Chỉnh sửa: Sau khi xem xét các bình luận, tôi quyết định đưa ra một câu trả lời đầy đủ hơn. Tôi nghĩ rằng tài khoản này cho tất cả các trường hợp.

s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 14:04May 3, 2009 at 14:04

OnePorterOnePorteroneporter

2.9543 huy hiệu vàng22 Huy hiệu bạc15 Huy hiệu đồng3 gold badges22 silver badges15 bronze badges

3

Thử cái này:

"\b\d+\b"

Điều đó sẽ chỉ phù hợp với những chữ số không phải là một phần của một từ khác.

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 14:12May 3, 2009 at 14:12

Jrcalzadajrcalzadajrcalzada

3621 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

4

Sử dụng

s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)
0 không tốt lắm, vì nó không xử lý các tab, et al. Cắt đầu tiên tại một giải pháp tốt hơn là:

re.sub(r"\b\d+\b", "", s)

Lưu ý rằng mẫu là một chuỗi thô vì

s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)
1 thường là lối thoát không gian ngược cho các chuỗi và chúng tôi muốn lối thoát REGEX từ đặc biệt. Một phiên bản một chút fancier là:

re.sub(r"$\d+\W+|\b\d+\b|\W+\d+$", "", s)

Điều đó cố gắng loại bỏ khoảng trắng hàng đầu/dấu vết khi có các chữ số ở đầu/cuối của chuỗi. Tôi nói "cố gắng" bởi vì nếu có nhiều số ở cuối thì bạn vẫn có một số không gian.

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 15:05May 3, 2009 at 15:05

DWCDWCdwc

23,5K7 Huy hiệu vàng43 Huy hiệu bạc54 Huy hiệu đồng7 gold badges43 silver badges54 bronze badges

Để xử lý các chuỗi chữ số ở đầu một dòng:

s = re.sub(r"(^|\W)\d+", "", s)

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 14:23May 3, 2009 at 14:23

Bạn có thể thử cái này

s = "This must not b3 delet3d, but the number at the end yes 134411"
re.sub("(\s\d+)","",s) 

kết quả:

'This must not b3 delet3d, but the number at the end yes'

Quy tắc tương tự cũng áp dụng cho

s = "This must not b3 delet3d, 4566 but the number at the end yes 134411" 
re.sub("(\s\d+)","",s) 

result:

'This must not b3 delet3d, but the number at the end yes'

Đã trả lời ngày 15 tháng 12 năm 2018 lúc 7:45Dec 15, 2018 at 7:45

Adesstadesstadesst

1872 Huy hiệu bạc7 Huy hiệu đồng2 silver badges7 bronze badges

Để chỉ khớp các số nguyên tinh khiết trong một chuỗi:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
1

Nó làm đúng với điều này, chỉ phù hợp với mọi thứ sau triệu:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
2

Tất cả 8 câu trả lời khác của Regex trên trang này đều thất bại theo nhiều cách khác nhau với đầu vào đó.

Dấu gạch ngang ở cuối bằng 0-9 đầu tiên đó ... [0-9-] ... bảo tồn -007 và dấu gạch ngang trong bộ thứ hai bảo tồn 8-.

Hoặc \ d thay thế 0-9 nếu bạn thích

tại Regex101

Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

Nó có thể được đơn giản hóa?

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

Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

GSEATTLEGSEATTLEgseattle

9211 Huy hiệu vàng13 Huy hiệu bạc23 Huy hiệu đồng1 gold badge13 silver badges23 bronze badges

1

Tôi không biết tình huống thực sự của bạn trông như thế nào, nhưng hầu hết các câu trả lời trông giống như chúng sẽ không xử lý các số âm hoặc số thập phân,

s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)
2

Ở trên cũng nên xử lý những thứ như,

"Điều này không được B3 Delet3D, mà là số ở cuối có -134.411"

Nhưng điều này vẫn chưa đầy đủ - có lẽ bạn cần một định nghĩa đầy đủ hơn về những gì bạn có thể mong đợi để tìm thấy trong các tệp bạn cần phân tích.

EDIT: Cũng đáng lưu ý rằng các thay đổi '\ b' tùy thuộc vào địa phương/bộ ký tự bạn đang sử dụng để bạn cần phải cẩn thận một chút với điều đó.

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 15:37May 3, 2009 at 15:37

si28719esi28719esi28719e

2.1355 huy hiệu vàng20 Huy hiệu bạc22 Huy hiệu đồng5 gold badges20 silver badges22 bronze badges

Nếu số của bạn là luôn luôn ở cuối chuỗi của bạn, hãy thử:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
3

Nếu không, bạn có thể thử

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
4

Bạn có thể điều chỉnh các tham chiếu back

Areza

5.0187 Huy hiệu vàng42 Huy hiệu bạc71 Huy hiệu đồng7 gold badges42 silver badges71 bronze badges

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 14:06May 3, 2009 at 14:06

1

Giải pháp không regex:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
5

Chia tách bởi

s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)
4 và kiểm tra xem phần Chunk có phải là số bằng cách làm
s = re.sub("^\d+\s|\s\d+\s|\s\d+$", " ", s)
5 không, sau đó kết hợp chúng lại với nhau. Verbosely (không sử dụng danh sách hiểu):

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
6

Đã trả lời ngày 3 tháng 5 năm 2009 lúc 15:21May 3, 2009 at 15:21

DBRDBRdbr

162K65 Huy hiệu vàng273 Huy hiệu bạc340 Huy hiệu Đồng65 gold badges273 silver badges340 bronze badges

Tôi đã có một khoảnh khắc ánh sáng, tôi đã thử và nó hoạt động:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
7

output:

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
8

Đã trả lời ngày 28 tháng 11 năm 2021 lúc 16:49Nov 28, 2021 at 16:49

Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

Ryhnryhnryhn

766 huy hiệu đồng6 bronze badges

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" \d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '
9

"Điều này không được B3 Delet3D, mà là số ở cuối có"

Điều này sẽ loại bỏ các số ở cuối chuỗi.

Đã trả lời ngày 20 tháng 11 năm 2017 lúc 12:54Nov 20, 2017 at 12:54

Hướng dẫn python regex replace numbers in string - python regex thay thế các số trong chuỗi

Làm cách nào để thay thế một số trong một chuỗi trong Python?

Phương thức số 1: Sử dụng thay thế () + isDigit () Trong này, chúng tôi kiểm tra số bằng isDigit () và thay thế () được sử dụng để thực hiện nhiệm vụ thay thế các số bằng K.Using replace() + isdigit() In this, we check for numerics using isdigit() and replace() is used to perform the task of replacing the numbers by K.

Làm cách nào để loại bỏ các chữ số khỏi chuỗi trong Python?

Hãy thảo luận về những cách khác nhau mà chúng ta có thể đạt được nhiệm vụ này ...
Phương pháp số 1: Sử dụng tham gia và isDigit ().
Phương pháp số 2: Sử dụng dịch và chữ số ..
Phương pháp số 3: Sử dụng Bộ lọc và Lambda ..
Phương thức số 4 sử dụng Join () và Isalpha ().
Phương pháp số 5: Sử dụng vòng lặp và trong ..
Phương pháp số 6: Sử dụng hàm ord () ..

Làm thế nào để bạn thay thế tất cả các lần xuất hiện của một mẫu regex trong một python chuỗi?

Đếm: Số lượng tối đa của các lần xuất hiện được thay thế.Số lượng phải luôn luôn là một số nguyên dương nếu được chỉ định..Theo mặc định, số lượng được đặt thành 0, có nghĩa là phương thức re.sub () sẽ thay thế tất cả các lần xuất hiện mẫu trong chuỗi đích.re. sub() method will replace all pattern occurrences in the target string.

Bạn có thể sử dụng thay thế trong Python Regex không?

Để thay thế một chuỗi trong Python, phương thức Regex Sub () được sử dụng.Đây là một phương thức Python tích hợp trong mô-đun RE trả về chuỗi thay thế.Đừng quên nhập mô -đun lại.Phương thức này tìm kiếm mẫu trong chuỗi và sau đó thay thế nó bằng một biểu thức mới được cho.the regex sub() method is used. It is a built-in Python method in re module that returns replaced string. Don't forget to import the re module. This method searches the pattern in the string and then replace it with a new given expression.