Разделение строк и других значений через запятую в качестве разделителя ....! - PullRequest
0 голосов
/ 29 июня 2018

Я работаю с проектом, в нем будет переменная, содержащая любые типы данных, разделенные запятой.

Мне нужно разделить все эти вещи, а также определить, какой это тип.

Например: data = "Hello, Hey", 123,10.04

Я использовал функцию split () для разделения, но она разделяет запятую даже внутри строки "Hello, Hey"

Мне это не нужно, все, что мне нужно, это просто разделять значения запятыми, а не запятыми внутри строки.

Я убил свой мозг, но это все еще проблема для меня. Потому что я новичок.

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 29 июня 2018

Вы можете использовать re.findall с регулярным выражением "[^"]+"|[^,]+:

import re
print(re.findall(r'"[^"]+"|[^,]+', '"Hello, Hey",123,10.04'))

Это выводит:

['"Hello, Hey"', '123', '10.04']
0 голосов
/ 29 июня 2018

Вы можете использовать модуль re следующим образом:

[m.group(1) or m.group(2) for m in re.finditer(r'"([^"]*)",?|([^,]*),?', '"Hello, Hey",123,10.04')]
0 голосов
/ 29 июня 2018

Вы можете использовать re.split, чтобы разделить комбинацию двойной кавычки перед запятой или запятой, за которой следует цифра

import re

data='"Hello, Hey",123,10.04'
re.split(r'(?<="),|,(?=\d)', data)
['"Hello, Hey"', '123', '10.04']
0 голосов
/ 29 июня 2018

Я изо всех сил пытаюсь понять ваш вопрос - кажется, у вас есть строка с данными внутри строки, разделенными запятыми:

data='"Hello, Hey",123,10.04'

Вы можете использовать модуль shlex , чтобы разделить его в соответствии с кавычками

>>> import shlex
>>> s = shlex.shlex(data)
>>> s.whitespace = ','
>>> s.wordchars += '.'
>>> print(list(s))
['"Hello, Hey"', '123', '10.04']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...