#python #string #alignment
#python #строка #выравнивание
Вопрос:
Есть простой способ выровнять строки в python? (строки сохраняются в списке)
Например, s — это список, поэтому преобразуйте-
s[0] = { part1{ c = FF000800 echo = 0 } } data { value = CCC } }
s[1] = { part1{ c = FF000800 echo = 88 } } data { value = C } }
Чтобы стать:
s[0] = { part1{ c = FF000800 echo = 0 } } data { value = CCC } }
s[1] = { part1{ c = FF000800 echo = 88 } } data { value = C } }
Ответ №1:
Попробуйте это, хотя это очень специфично для конкретной ситуации, оно находит наибольшее количество и последовательность Cs и использует ljust()
для выравнивания:
s = ['{ part1{ c = FF000800 echo = 0 } } data { value = CCC } }',
'{ part1{ c = FF000800 echo = 88 } } data { value = C } }' ]
maxlengthnums = 0
maxlengthletters = 0
for i in s:
groups_s = re.search(r'({ part1{ c = FF000800 echo = )(d )( } } data { value = )(C )(.*)', i)
if len(groups_s.group(2)) > maxlengthnums:
maxlengthnums = len(groups_s.group(2))
if len(groups_s.group(4)) > maxlengthletters:
maxlengthletters = len(groups_s.group(4))
print(maxlengthnums, maxlengthletters)
for i in range(len(s)):
s[i] = re.sub(r'({ part1{ c = FF000800 echo = )(d )( } } data { value = )(C )(.*)', lambda x: x.group(1)
x.group(2).ljust(maxlengthnums, ' ') x.group(3) x.group(4).ljust(maxlengthletters, ' ') x.group(5), s[i])
for i in s:
print(i, 'n')
>>>
{ part1{ c = FF000800 echo = 0 } } data { value = CCC } }
{ part1{ c = FF000800 echo = 88 } } data { value = C } }