Рассмотрим строку s = "aa,bb11,22 , 33 , 44,cc , dd "
.
Я хотел бы разделить s
на следующий список токенов, используя модуль регулярных выражений в < strong>Python, что похоже на функциональность, предлагаемую Perl:
"aa,bb11"
"22"
"33"
"44,cc , dd "
Примечание:
- Я хочу токенизировать запятые, но только если у этих запятых есть числа с обеих сторон.
- Любые (необязательные) пробелы вокруг этих «числовых запятых», на которые я ориентируюсь, должны быть удалены в результате. Необязательный пробел может состоять из нескольких пробелов.
- Любые другие пробелы должны быть оставлены так, как они появляются в исходной строке.
Моя лучшая попытка до сих пор заключается в следующем:
import re
pattern = r'(?<=\d)(\s*),(\s*)(?=\d)'
s = 'aa,bb11,22 , 33 , 44,cc , dd '
print re.compile(pattern).split(s)
но это печатает:
['aa,bb11', '', '', '22', ' ', ' ', '33', ' ', ' ', '44,cc , dd ']
что близко к тому, что я хочу, поскольку 4 вещи, которые я хочу, содержатся в списке. Я мог бы пройти и избавиться от любых пустых строк и любых строк, состоящих только из пробелов/запятых, но я бы предпочел иметь однострочное регулярное выражение, которое делает все это за меня.
Любые идеи?