python - regex - разделяет строку массива запятой - PullRequest
0 голосов
/ 12 июля 2019

Я использую это для декодирования строки массива с разделителями через запятую:

formatted_string = re.sub('\s+', ', ', unknown_encoding_string[1:-1])

, кажется, работает с этим (заметил, что все еще есть запятая, но в любом случае это работает)

unknown_encoding_string = "[-0.03833389  0.00832078  0.1206817   0.01020864 
 0.01418733  0.01334922  0.0180524 ]"

formatted_string = "-0.03833389, 0.00832078, 0.1206817, 0.01020864, 0.01418733, 0.01334922, 0.0180524,"

например: https://pastebin.com/eSVj1K6Q

но не с этим.спереди у него есть «,», что вызывает проблему.

unknown_encoding_string = "[ -0.03833389  0.00832078 -5.50815463e-02
2.86253393e-02 -1.66405290e-02  2.03181207e-02]"

formatted_string = ", -0.03833389, 0.00832078, -5.50815463e-02, 2.86253393e-02, -1.66405290e-02, 2.03181207e-02"

eg: https://pastebin.com/UjswSVSs

Я хочу, чтобы по возможности он был разделен, если возможно, так:

"123,4342,54534"

Я использую для этого Python.

Ответы [ 2 ]

1 голос
/ 12 июля 2019

В Python есть много отличных инструментов для работы со строками без необходимости прибегать к регулярным выражениям.

unknown_encoding_string = "[-0.03833389  0.00832078  0.1206817   0.01020864   0.01418733  0.01334922  0.0180524 ]"

# Strip removes the specified characters from the start and end of the string
cleaned_string = unknown_encoding_string.strip("[] ")

# Split converts your string into a list of strings; by default splits on space
values = cleaned_string.split()

# Join will take an iterable and join it with the specified string as the joining character
formatted_string = ",".join(values)

# or in a single line...
formatted_string = ",".join(unknown_encoding_string.strip("[] ").split())

Надеюсь, что поможет

0 голосов
/ 12 июля 2019

С помощью регулярного выражения вы можете вставить запятую между двумя непробельными символами:

re.sub(r"(\S)\s+(\S)",r"\1, \2",text)

Вы можете комбинировать его с полосой ():

re.sub(r"(\S)\s+(\S)",r"\1, \2",text.strip("[] "))

\ 1, \ 2 равно совпадению символа в группе 1 и 2 в скобках.

Или мы можем использовать прогнозирование и прогнозирование:

re.sub(r"(?<=\S)\s+(?=\S)",r", ",text.strip("[] "))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...