python re.split () для разделения по пробелам, запятым и периодам, но не в таких случаях, как 1000 или 1.50

Я хочу использовать python re.split() для разделения строки на отдельные слова пробелами, запятыми и периодами. Но я не хочу, чтобы "1,200" были разделены на ["1", "200"] или ["1.2"] чтобы быть разделены на ["1", "2"] .

пример

  • Python Regex, re.sub, заменяя несколько частей шаблона?
  • Различное поведение между re.finditer и re.findall
  • Регулярное выражение Python, заменяющее \ u2022
  • Как найти кратчайшее совпадающее совпадение с использованием регулярных выражений?
  • Как вы используете регулярное выражение в понимании списка в Python?
  • Регулярное выражение Python разбивает строку на один из двух разделителей
  •  l = "one two 3.4 5,6 seven.eight nine,ten" 

    Результат должен быть ["one", "two", "3.4", "5,6" , "seven", "eight", "nine", "ten"]

  • matplotlib: как изменить цвет точек данных на основе некоторой переменной
  • InvalidBasesError: не удается разрешить базы для
  • pytz: вернуть Olson Название часового пояса только от GMT GMT
  • Найти максимальную длину всех подстрок длиной n-слов, разделяемых двумя строками
  • Перемещения между цифрами и линиями
  • Python 3 - Может ли мариновать байтовые объекты размером более 4 ГБ?
  • 2 Solutions collect form web for “python re.split () для разделения по пробелам, запятым и периодам, но не в таких случаях, как 1000 или 1.50”

    Используйте негативный взгляд и негативный вид:

     > s = "one two 3.4 5,6 seven.eight nine,ten" > parts = re.split('\s|(?<!\d)[,.](?!\d)', s) ['one', 'two', '3.4', '5,6', 'seven', 'eight', 'nine', 'ten'] 

    Другими словами, вы всегда разделяете \s (пробелы) и разделяете только запятыми и периодами, если они не соблюдаются (?!\d) или предшествуют (?<!\d) цифрой.

    ДЕМО .

    EDIT : согласно комментарию @verdesmarald, вы можете использовать следующее:

     > s = "one two 3.4 5,6 seven.eight nine,ten,1.2,a,5" > print re.split('\s|(?<!\d)[,.]|[,.](?!\d)', s) ['one', 'two', '3.4', '5,6', 'seven', 'eight', 'nine', 'ten', '1.2', 'a', '5'] 

    Это разделит "1.2,a,5" на ["1.2", "a", "5"] .

    ДЕМО .

    Таким образом, вы хотите разбить на пробелы, а также на запятые и периоды, которые не окружены цифрами. Это должно работать:

     r" |(?<![0-9])[.,](?![0-9])" 
    Python - лучший язык программирования в мире.