Формат на Python

#python-3.x

Вопрос:

У меня есть следующий список значений:

 no column 1. 111-222-11 2. 112-333-12 3. 113-444-13  

Я хочу отформатировать значение от 111-222-11 до 111-222-011 и аналогичным образом отформатировать другие значения. Вот мой фрагмент кода на Python 3, который я пытаюсь использовать для этого:

 ‘{:03}-{:06}-{:03}.format(column)  

Я надеюсь, что вы сможете помочь.

Комментарии:

1. Лучше спросите на StackOverflow .

2. Я не могу понять, о чем вы спрашиваете: где колонки? Что вы пробовали (показать код, не совсем немного, но и не больше, чем нужно)?

3. Хранится ли список в текстовом файле? Вам нужно, чтобы он был записан обратно в текстовый файл? Необходим ли ваш скрипт на Python или это может быть bash , например?

4. Вам просто нужно добавить начальный нуль перед последним из трех значений, разделенных «-«? Ожидается ли, что все входные значения будут одинаковой длины (3 цифры, 3 цифры, 2 цифры)?

Ответ №1:

Предполагая, что column это переменная , которой можно присвоить строковые значения 111-222-11 112-333-12 , 113-444-13 и т. Д., Которую вы хотите изменить на 111-222-011 112-333-012 , 113-444-013 и т. Д., Похоже, что вы пытались использовать комбинацию обозначений среза и format метода для достижения этой цели.

Обозначение среза

Нотация среза, применяемая к строке, рассматривает ее как объект, подобный списку, состоящий из символов. Позиционный индекс символа в начале строки начинается с нуля. Позиционный индекс символа в конце строки начинается с -1 . Первая двоеточие : разделяет начало и конец среза. Конец среза в него не входит, в отличие от его начала. Вы указываете срезы так же, как указывали бы индексы элементов в списке, используя квадратные скобки:

 '111-222-11'[0:8]  

бы вернулся

 '111-222-'  

Обычно индексы первого и последнего символов строки пропускаются и подразумеваются двоеточием.

Зная точную позицию , в которой вам нужно добавить начальный ноль перед последними двумя цифрами строки, присвоенной column , вы могли бы сделать это просто с помощью нотации среза:

 column[:8]   '0'   column[-2:]  

format метод

Этот format метод представляет собой метод форматирования строк. Итак, вы хотите использовать одинарные или двойные кавычки вокруг своих строк, чтобы указать их при применении к ним этого метода:

 'your output string here'.format('your input string here')  

Числа в фигурных скобках не являются срезами. Они являются заполнителями, в которые вставляются строки, передаваемые format методу. Таким образом, комбинируя срезы и format метод, вы можете добавить начальный ноль перед последними двумя цифрами column строки, подобной этой:

 '{0}0{1}'.format(column[:8], column[-2:])  

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

split метод

Альтернативой нарезке может быть использование split метода разделения строки разделителем. split Метод возвращает список строк. Вам нужно префиксировать его * оператором, чтобы распаковать аргументы из списка, прежде чем передавать их format методу. В противном случае весь список будет передан первому заполнителю.

 '{0}-{1}-0{2}'.format(*column.split('-'))  

Он разбивает строку на список, рассматриваемый - как разделитель, и помещает каждый элемент в новую строку, которая добавляет 0 символ перед последним.