Как выровнять строки в Python?

#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   } }