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?

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

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

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

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

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

Bài Viết Liên Quan

Chủ Đề