регулярное выражение Python для разделения списка подстрок в строке - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть такая строка '[[20, 20.4,aa], [c, 10.5, eee]]'.Моя цель заключается в том, чтобы заключить символы в одинарные кавычки и оставить цифры такими, какие они есть.

Например:

examples:
s1 = "[[20, 20.4, aa], [c, 10.5, eee]]"
s2 = "[[a , bg, 20], [cff, 20, edd]]"

required:
s1 = "[[20, 20.4,'aa'], ['c', 10.5, 'eee']]"
s2 = "[[a , 'bg', 20], ['cff', 20, 'edd']]"

До сих пор я делал это:

s = '[[20, 20.4,a], [c, 10.5, e]]'

s = ''.join(["'"+ i + "'" if i.isalpha() else i for i in s])
s # "[[20, 20.4,'a'], ['c', 10.5, 'e']]"

Но это работает только для отдельных персонажей.Если у меня будет aa, это даст 'a''a', что неправильно.Как решить проблему?

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете использовать sub :

import re

s1 = '[[20, 20.4,aa], [c, 10.5, eee]]'
s2 = '[[a , bg,20], [cff, 20, edd]]'

rs1 = re.sub('([a-zA-Z]+)', r"'\1'", s1)
print(rs1)
rs2 = re.sub('([a-zA-Z]+)', r"'\1'", s2)
print(rs2)

Выход

[[20, 20.4,'aa'], ['c', 10.5, 'eee']]
[['a' , 'bg',20], ['cff', 20, 'edd']]

Шаблон ([a-zA-Z]+) означает совпадение одной или нескольких букви поместите их в группу, затем обратитесь к этой группе r"'\1'" и заключите в одинарные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...