Hướng dẫn split number in string python - chia số trong chuỗi python

Tôi muốn phân tách các chuỗi như thế này

'foofo21'
'bar432'
'foobar12345'

vào trong

['foofo', '21']
['bar', '432']
['foobar', '12345']

Có ai đó biết một cách dễ dàng và đơn giản để làm điều này trong Python?

Hướng dẫn split number in string python - chia số trong chuỗi python

hỏi ngày 9 tháng 1 năm 2009 lúc 23:02Jan 9, 2009 at 23:02

Tôi sẽ tiếp cận điều này bằng cách sử dụng

['foofo', '21']
['bar', '432']
['foobar', '12345']
7 theo cách sau:

import re
match = re.match(r"([a-z]+)([0-9]+)", 'foofo21', re.I)
if match:
    items = match.groups()
print(items)
>> ("foofo", "21")

Hướng dẫn split number in string python - chia số trong chuỗi python

Đã trả lời ngày 9 tháng 1 năm 2009 lúc 23:12Jan 9, 2009 at 23:12

Evan Fosmarkevan FosmarkEvan Fosmark

96.2K34 Huy hiệu vàng104 Huy hiệu bạc117 Huy hiệu đồng34 gold badges104 silver badges117 bronze badges

8

def mysplit(s):
    head = s.rstrip('0123456789')
    tail = s[len(head):]
    return head, tail
>>> [mysplit(s) for s in ['foofo21', 'bar432', 'foobar12345']]
[('foofo', '21'), ('bar', '432'), ('foobar', '12345')]

Hướng dẫn split number in string python - chia số trong chuỗi python

Giorgos Xou

1.0411 huy hiệu vàng8 Huy hiệu bạc23 Huy hiệu đồng1 gold badge8 silver badges23 bronze badges

Đã trả lời ngày 10 tháng 1 năm 2009 lúc 6:17Jan 10, 2009 at 6:17

MikemikeMike

1.0366 huy hiệu bạc7 huy hiệu đồng6 silver badges7 bronze badges

7

Một lựa chọn khác:

>>> [re.split(r'(\d+)', s) for s in ('foofo21', 'bar432', 'foobar12345')]
[['foofo', '21', ''], ['bar', '432', ''], ['foobar', '12345', '']]

Đã trả lời ngày 10 tháng 1 năm 2009 lúc 0:54Jan 10, 2009 at 0:54

JFSJFSjfs

384K183 Huy hiệu vàng949 Huy hiệu bạc1621 Huy hiệu Đồng183 gold badges949 silver badges1621 bronze badges

2

>>> r = re.compile("([a-zA-Z]+)([0-9]+)")
>>> m = r.match("foobar12345")
>>> m.group(1)
'foobar'
>>> m.group(2)
'12345'

Vì vậy, nếu bạn có một danh sách các chuỗi có định dạng đó:

import re
r = re.compile("([a-zA-Z]+)([0-9]+)")
strings = ['foofo21', 'bar432', 'foobar12345']
print [r.match(string).groups() for string in strings]

Output:

[('foofo', '21'), ('bar', '432'), ('foobar', '12345')]

Đã trả lời ngày 9 tháng 1 năm 2009 lúc 23:12Jan 9, 2009 at 23:12

0

Evan Fosmarkevan Fosmark

>>> strings = ['foofo21', 'bar432', 'foobar12345']
>>> [re.findall(r'(\w+?)(\d+)', s)[0] for s in strings]
[('foofo', '21'), ('bar', '432'), ('foobar', '12345')]

96.2K34 Huy hiệu vàng104 Huy hiệu bạc117 Huy hiệu đồng

Giorgos XouJan 9, 2009 at 23:40

1.0411 huy hiệu vàng8 Huy hiệu bạc23 Huy hiệu đồngPEZ

Đã trả lời ngày 10 tháng 1 năm 2009 lúc 6:177 gold badges42 silver badges65 bronze badges

3

Mikemike

['foofo', '21']
['bar', '432']
['foobar', '12345']
0

Hướng dẫn split number in string python - chia số trong chuỗi python

1.0366 huy hiệu bạc7 huy hiệu đồng

Một lựa chọn khác:5 gold badges32 silver badges43 bronze badges

Đã trả lời ngày 10 tháng 1 năm 2009 lúc 0:54Aug 5, 2019 at 13:44

JFSJFSBryo Much

384K183 Huy hiệu vàng949 Huy hiệu bạc1621 Huy hiệu Đồng1 silver badge2 bronze badges

['foofo', '21']
['bar', '432']
['foobar', '12345']
1

Vì vậy, nếu bạn có một danh sách các chuỗi có định dạng đó:Nov 19, 2015 at 19:28

Tôi luôn là người đưa ra findall () =)

['foofo', '21']
['bar', '432']
['foobar', '12345']
2

Lưu ý rằng tôi đang sử dụng Regex đơn giản hơn (ít hơn để loại) so với hầu hết các câu trả lời trước đó.

['foofo', '21']
['bar', '432']
['foobar', '12345']
3

Đã trả lời ngày 9 tháng 1 năm 2009 lúc 23:40Apr 25, 2019 at 6:27

Pezpez

['foofo', '21']
['bar', '432']
['foobar', '12345']
4

16.6K7 Huy hiệu vàng42 Huy hiệu bạc65 Huy hiệu ĐồngOct 8, 2020 at 12:38

Dưới đây là một hàm đơn giản để tách rời nhiều từ và số từ một chuỗi có độ dài nào, phương thức RE chỉ tách biệt hai từ và số đầu tiên. Tôi nghĩ rằng điều này sẽ giúp mọi người khác trong tương lai,

['foofo', '21']
['bar', '432']
['foobar', '12345']
5

Hướng dẫn split number in string python - chia số trong chuỗi python

Nikaido

4.1365 Huy hiệu vàng32 Huy hiệu bạc43 Huy hiệu đồng18 gold badges31 silver badges51 bronze badges

Đã trả lời ngày 5 tháng 8 năm 2019 lúc 13:44Sep 22, 2019 at 18:27

Hướng dẫn split number in string python - chia số trong chuỗi python

1

Bryo Manybryo nhiều

['foofo', '21']
['bar', '432']
['foobar', '12345']
6

811 Huy hiệu bạc2 Huy hiệu đồng

Đã trả lời ngày 19 tháng 11 năm 2015 lúc 19:28May 18 at 18:42

Hướng dẫn split number in string python - chia số trong chuỗi python

Làm thế nào để bạn chia một số trong một chuỗi trong Python?

Sử dụng phương thức re.split () để chia một chuỗi thành văn bản và số, ví dụ: my_list = re. chia (r '(\ d+)', my_str). split() method to split a string into text and number, e.g. my_list = re. split(r'(\d+)', my_str) .

Làm cách nào để chia một số trong một chuỗi?

Các bước:..
Tính độ dài của chuỗi ..
Quét mọi ký tự (CH) của một chuỗi từng người một.Nếu (CH là một chữ số) thì hãy nối nó trong chuỗi Res1.....
In tất cả các chuỗi, chúng ta sẽ có một chuỗi chứa một phần số, phần không phải là số khác và phần cuối cùng chứa các ký tự đặc biệt ..

Bạn có thể chia một số trong Python không?

Để chia số nguyên thành các chữ số: Sử dụng lớp str () để chuyển đổi số nguyên thành chuỗi. Sử dụng danh sách hiểu thành lặp qua chuỗi. Mỗi lần lặp, hãy sử dụng lớp int () để chuyển đổi từng phần phụ thành số nguyên.Use the str() class to convert the integer to a string. Use a list comprehension to iterate over the string. On each iteration, use the int() class to convert each substring to an integer.

Làm thế nào để bạn phân tách các số và chữ cái trong một chuỗi trong Python?

Làm thế nào để phân chia một chuỗi giữa các số và chữ cái ?..
# Phương pháp 1: Re.Split () Nhập RE.s = '111a222b333c' res = re.chia ('(\ d+)', s) ....
# Phương pháp 2: Re.Findall () Nhập RE.s = '111a222b333c' res = re.findall ('(\ d+| [a-za-z]+)', s) ....
# Phương thức 3: itertools.groupBy () từ itertools Nhập nhóm.S = '111A222B333C' res = ['' ..