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
1Tô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
3Hay tôi phải tạo ra một biểu hiện thông thường?
Johnsyweb
Huy hiệu vàng 132K2323 gold badges179 silver badges242 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.2K11 Huy hiệu vàng117 Huy hiệu bạc139 Huy hiệu đồng11 gold badges117 silver badges139 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
Terryaterrya♦Martijn Pieters
57.2K11 Huy hiệu vàng117 Huy hiệu bạc139 Huy hiệu đồng277 gold badges3910 silver badges3256 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
992K277 Huy hiệu vàng3910 Huy hiệu bạc3256 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
328K62 Huy hiệu vàng574 Huy hiệu bạc481 Huy hiệu Đồng2 gold badges17 silver badges31 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.2062 huy hiệu vàng17 Huy hiệu bạc31 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
8 [xóa số khỏi chuỗi]:7 bronze badges>>> import re
>>> s = "_u1_v1"
>>> print re.sub['\d', '%d', s]
_u%d_v%d
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