Разделение строки на не цифры - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь разбить строку на любой символ, который не является цифрой.

orig = '0 1,2.3-4:5;6d7'
results = orig.split(r'\D+')

Я ожидаю получить список целых чисел в results

0, 1, 2, 3, 4, 5, 6, 7

но вместо этого я получаю список с одним строковым элементом, который соответствует исходной строке.

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Попробуйте это:

orig = '0 1,2.3-4:5;6d7'
[i for i in orig if i.isdigit()]
0 голосов
/ 17 февраля 2019
for i in '0 1,2.3-4:5;6d7':
    try:
        print(int(i),end=' ')
    except:
        continue

0 1 2 3 4 5 6 7

0 голосов
/ 17 февраля 2019

Ну ... вы используете str.split() - который принимает символы для разделения, а не регулярное выражение.Ваш код будет разделен на любую '\D+' - строку внутри вашего текста:

orig = 'Some\\D+text\\D+tosplit'
results = orig.split(r'\D+')  # ['Some', 'text', 'tosplit']

Вы можете использовать re.split () вместо:

import re

orig = '0 1,2.3-4:5;6d7'
results = re.split(r'\D+',orig)
print(results)

дляget

['0', '1', '2', '3', '4', '5', '6', '7']

Используйте data = list(map(int,results)) для преобразования в int.

...