Giả sử tôi đã có một chuỗi
string1 = "498results should get"
Bây giờ tôi cần chỉ nhận các giá trị số nguyên từ chuỗi như
string2 = "49867results should get"
string3 = "497543results should get"
8. Ở đây tôi không muốn sử dụng string2 = "49867results should get"
string3 = "497543results should get"
9 vì các giá trị số nguyên có thể tăng như sau các ví dụ:string2 = "49867results should get"
string3 = "497543results should get"
Vì vậy, tôi muốn chỉ lấy các giá trị số nguyên từ chuỗi chính xác theo cùng một thứ tự. Ý tôi là
>>> import re
>>> string1 = "498results should get"
>>> int[re.search[r'\d+', string1].group[]]
498
0 từ >>> import re
>>> string1 = "498results should get"
>>> int[re.search[r'\d+', string1].group[]]
498
1 tương ứng.Bất cứ ai có thể cho tôi biết làm thế nào để làm điều này trong một hoặc hai dòng?
hỏi ngày 5 tháng 7 năm 2012 lúc 6:55Jul 5, 2012 at 6:55
0
>>> import re
>>> string1 = "498results should get"
>>> int[re.search[r'\d+', string1].group[]]
498
Nếu có nhiều số nguyên trong chuỗi:
>>> map[int, re.findall[r'\d+', string1]]
[498]
Đã trả lời ngày 5 tháng 7 năm 2012 lúc 6:57Jul 5, 2012 at 6:57
6
Đây là một lớp lót của bạn, mà không cần sử dụng bất kỳ biểu thức thông thường nào, đôi khi có thể trở nên đắt đỏ:
>>> ''.join[filter[str.isdigit, "1234GAgade5312djdl0"]]
returns:
'123453120'
Đã trả lời ngày 17 tháng 11 năm 2016 lúc 18:54Nov 17, 2016 at 18:54
BobortbobortBobort
2.99031 Huy hiệu bạc39 Huy hiệu đồng31 silver badges39 bronze badges
Nếu bạn có nhiều bộ số thì đây là một tùy chọn khác
>>> import re
>>> print[re.findall['\d+', 'xyz123abc456def789']]
['123', '456', '789']
Nó không tốt cho chuỗi số điểm nổi mặc dù.
Đã trả lời ngày 24 tháng 5 năm 2016 lúc 11:07May 24, 2016 at 11:07
Jacanterburyjacanterburyjacanterbury
1.3451 Huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng1 gold badge24 silver badges33 bronze badges
Phiên bản Iterator
>>> import re
>>> string1 = "498results should get"
>>> [int[x.group[]] for x in re.finditer[r'\d+', string1]]
[498]
Đã trả lời ngày 5 tháng 7 năm 2012 lúc 7:02Jul 5, 2012 at 7:02
John La Rooyjohn La RooyJohn La Rooy
Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges
>>> import itertools
>>> int[''.join[itertools.takewhile[lambda s: s.isdigit[], string1]]]
Đã trả lời ngày 5 tháng 7 năm 2012 lúc 7:06Jul 5, 2012 at 7:06
Craig Citrocraig CitroCraig Citro
6.4171 Huy hiệu vàng 30 Huy hiệu bạc28 Huy hiệu Đồng1 gold badge30 silver badges28 bronze badges
4
Với Python 3.6, hai dòng này trả về một danh sách [có thể trống]
>>[int[x] for x in re.findall['\d+', your_string]]
Tương tự như
string2 = "49867results should get"
string3 = "497543results should get"
0Đã trả lời ngày 16 tháng 5 năm 2018 lúc 15:50May 16, 2018 at 15:50
huseyin39huseyin39huseyin39
1.34312 Huy hiệu bạc17 Huy hiệu đồng12 silver badges17 bronze badges
Cách tiếp cận này sử dụng danh sách hiểu, chỉ cần chuyển chuỗi làm đối số cho hàm và nó sẽ trả về một danh sách các số nguyên trong chuỗi đó.
string2 = "49867results should get"
string3 = "497543results should get"
1Như thế này
string2 = "49867results should get"
string3 = "497543results should get"
2Đầu ra
string2 = "49867results should get"
string3 = "497543results should get"
3Đã trả lời ngày 5 tháng 7 năm 2021 lúc 5:34Jul 5, 2021 at 5:34
string2 = "49867results should get"
string3 = "497543results should get"
4
Jochenjung
7.12312 Huy hiệu vàng64 Huy hiệu bạc108 Huy hiệu Đồng12 gold badges64 silver badges108 bronze badges
Đã trả lời ngày 30 tháng 10 năm 2017 lúc 15:20Oct 30, 2017 at 15:20
2
Một tùy chọn khác là xóa dấu ngoặc bằng các chữ cái bằng cách sử dụng
>>> import re
>>> string1 = "498results should get"
>>> int[re.search[r'\d+', string1].group[]]
498
2 và >>> import re
>>> string1 = "498results should get"
>>> int[re.search[r'\d+', string1].group[]]
498
3 [để lấy các chữ cái]:string2 = "49867results should get"
string3 = "497543results should get"
5Output:
string2 = "49867results should get"
string3 = "497543results should get"
6string2 = "49867results should get"
string3 = "497543results should get"
7Đã trả lời ngày 29 tháng 10 lúc 14:05Oct 29 at 14:05