Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

Tôi muốn tạo một chuỗi mới bằng cách thay thế các chữ số bằng %d ví dụ:

Name.replace( "_u1_v1" , "_u%d_v%d") 

... Nhưng số

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
0 có thể là bất kỳ chữ số nào, ví dụ
>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
1

Tôi có thể cho

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
2 một ký tự đại diện để mong đợi bất kỳ chữ số nào không? Như
>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
3

Hay tôi phải tạo ra một biểu hiện thông thường?

Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

Johnsyweb

Huy hiệu vàng 133K2323 gold badges180 silver badges244 bronze badges

hỏi ngày 29 tháng 9 năm 2013 lúc 23:23Sep 29, 2013 at 23:23

1

Sử dụng các biểu thức thông thường:

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
4 khớp với bất kỳ số 0-9.
>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
5 thay thế (các) số bằng %d

Đã trả lời ngày 29 tháng 9 năm 2013 lúc 23:24Sep 29, 2013 at 23:24

Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

TerryaterryaTerryA

57.4K11 Huy hiệu vàng117 Huy hiệu bạc140 Huy hiệu đồng11 gold badges117 silver badges140 bronze badges

Bạn không thể;

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
7 chỉ làm việc với văn bản theo nghĩa đen.

Để thay thế các mẫu, hãy sử dụng các biểu thức thông thường:

re.sub(r'_u\d_v\d', '_u%d_v%d', inputtext)

Demo:

>>> import re
>>> inputtext = '42_u2_v3.txt'
>>> re.sub(r'_u\d_v\d', '_u%d_v%d', inputtext)
'42_u%d_v%d.txt'

Đã trả lời ngày 29 tháng 9 năm 2013 lúc 23:24Sep 29, 2013 at 23:24

TerryaterryaMartijn Pieters

57.4K11 Huy hiệu vàng117 Huy hiệu bạc140 Huy hiệu đồng277 gold badges3920 silver badges3262 bronze badges

Bạn không thể;

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
7 chỉ làm việc với văn bản theo nghĩa đen.

>>> s = "_u1_v1"
>>> ''.join("%d" if c.isdigit() else c for c in s)
'_u%d_v%d'

Để thay thế các mẫu, hãy sử dụng các biểu thức thông thường:

>>> from itertools import groupby, chain
>>> s = "_u1_v13"
>>> grouped = groupby(s, str.isdigit)
>>> ''.join(chain.from_iterable("%d" if k else g for k,g in grouped))
'_u%d_v%d'

Martijn Pieters ♦ Martijn Pieters

996K277 Huy hiệu vàng3920 Huy hiệu bạc3262 Huy hiệu ĐồngSep 29, 2013 at 23:30

Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

Chỉ cho sự đa dạng, một số phương pháp không phải là REGEX:DSM

Hoặc nếu bạn cần nhóm nhiều chữ số:62 gold badges574 silver badges481 bronze badges

.

remove_digits = str.maketrans('0123456789', '%%%%%%%%%%')
'_u1_v1'.translate(remove_digits)  # '_u%_v%'

Đã trả lời ngày 29 tháng 9 năm 2013 lúc 23:30Dec 4, 2019 at 23:30

Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

DSMDSMLoMaPh

329K62 Huy hiệu vàng574 Huy hiệu bạc481 Huy hiệu Đồng2 gold badges17 silver badges32 bronze badges

Một giải pháp sử dụng

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
8 (nguồn):

from string import digits
remove_digits = str.maketrans('', '', digits)
str = str.translate(remove_digits)

Đã trả lời ngày 4 tháng 12 năm 2019 lúc 23:30

Hướng dẫn how do you replace a digit in python? - làm thế nào để bạn thay thế một chữ số trong python?

LomaphlomaphApr 25, 2020 at 16:16

1.2362 huy hiệu vàng17 Huy hiệu bạc32 Huy hiệu đồngAhmed

Nếu bạn muốn xóa tất cả các chữ số trong chuỗi, bạn có thể thực hiện bằng cách sử dụng

>>> import re
>>> s = "_u1_v1"
>>> print re.sub('\d', '%d', s)
_u%d_v%d
8 (xóa số khỏi chuỗi):7 bronze badges

temp = re.findall(r'\d+', text) 
res = list(map(int, temp))

for numText in res:
    text = text.replace(str(numText), str(numText)+'U')

Tất cả tín dụng được chuyển đến @lomaphApr 15, 2020 at 7:24

2