Существует ли способ преобразовать добавление отступа в коде Python к фигурным скобкам?

  1. Единственная простая альтернатива заключается в том, чтобы на самом деле ввести новую строку в переменную:
    $ STR='new
    line'
    $ printf '%s' "$STR"
    new
    line
    
    Да, это означает запись Enter, где это необходимо в коде.
  2. Существует несколько эквивалентов new line.
    \n           ### A common way to represent a new line character.
    \012         ### Octal value of a new line character.
    \x0A         ### Hexadecimal value of a new line character.
    
    Но все они требуют «интерпретации» каким-либо инструментом ( POSIX printf ):
    echo -e "new\nline"           ### on POSIX echo, `-e` is not required.
    printf 'new\nline'            ### Understood by POSIX printf.
    printf 'new\012line'          ### Valid in POSIX printf.
    printf 'new\x0Aline'       
    printf '%b' 'new\0012line'    ### Valid in POSIX printf.
    
    И поэтому инструмент должен построить строку с новой строкой:
    $ STR="$(printf 'new\nline')"
    $ printf '%s' "$STR"
    new
    line
    
  3. В некоторых оболочках последовательность $ 'является специальным расширением оболочки. Известны работы в ksh93, bash и zsh:
    $ STR=$'new\nline'
    
  4. Конечно, возможны и более сложные решения:
    $ echo '6e65770a6c696e650a' | xxd -p -r
    new
    line
    
    Или
    $ echo "new line" | sed 's/ \+/\n/g'
    new
    line
    
81
задан Jared 23 September 2008 в 11:45
поделиться

8 ответов

Существует решение Вашей проблемы, которая распределяется с самим Python. pindent.py, это расположено в каталоге Tools\Scripts в установке окон (мой путь к нему является C:\Python25\Tools\Scripts), похоже, что Вы имели бы к [1 110] захват это с svn.python.org при работе Linux или OSX.

Это добавляет комментарии, когда блоки закрываются или могут правильно расположить код с отступом, если комментарии вставляются. Вот пример кода, произведенного pindent с командой:

pindent.py -c myfile.py

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
       # end if
   else:
       print 'oops!'
   # end if
# end def foobar

, Где оригинал myfile.py был:

def foobar(a, b):
   if a == b:
       a = a+1
   elif a < b:
       b = b-1
       if b > a: a = a-1
   else:
       print 'oops!'

можно также использовать pindent.py -r для вставки корректного добавления отступа на основе комментариев (прочитайте заголовок pindent.py для деталей), это должно позволить Вам кодировать в Python, не вызывая беспокойство о добавлении отступа.

, Например, работая pindent.py -r myfile.py преобразует следующий код в myfile.py в то же, правильно расположенное с отступом (и также прокомментировал), код, как произведено pindent.py -c пример выше:

def foobar(a, b):
if a == b:
a = a+1
elif a < b:
b = b-1
if b > a: a = a-1
# end if
else:
print 'oops!'
# end if
# end def foobar

мне было бы интересно изучать, какое решение Вы заканчиваете тем, что использовали, если Вы требуете дальнейшей помощи, прокомментируйте это сообщение, и я попытаюсь помочь.

56
ответ дан Ilmari Karonen 5 November 2019 в 17:26
поделиться

Я лично сомневаюсь, что в настоящее время существует в данный момент, поскольку много поклонников Python любит то, что Python является этим путем, разграниченный пробел.

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

я предположил бы, что Вы используете программу экранного доступа здесь однако для вывода? Таким образом, вкладки казались бы "невидимыми" для Вас? С Для слепых выводом могло бы быть легче читать, но я могу понять точно, как путание этого могло быть.

На самом деле, это очень интересно мне. Мне жаль, что я не знал достаточно, чтобы быть в состоянии записать приложение, которое сделает это для Вас.

я думаю, что это - определенно что-то, для чего я вставлю отчет об ошибках, если Вы уже не сделали так себя или хотите.

Редактирование: Кроме того, как отметил John Millikin существует также PyBraces, Который мог бы быть эффективным решением Вас и может быть возможен быть взломанным вместе иждивенец на Ваших навыках кодирования, чтобы быть точно, в чем Вы нуждаетесь (и я надеюсь, что, если это так, Вы выпускаете его для других как себя для использования)

Редактирование 2: я имею всего , сообщило это средству отслеживания ошибки Python

11
ответ дан Community 5 November 2019 в 17:26
поделиться

Хотя я не являюсь слепым, я услышал хорошие вещи [приблизительно 110] Emacspeak. У них был режим Python начиная с их 8,0 выпусков в 1998 (они, кажется, произошли до выпуска 28.0!). Определенно стоящий проверки.

9
ответ дан technomalogical 5 November 2019 в 17:26
поделиться

Необходимо быть в состоянии настроить редактора для разговора вкладок и пробелов - я знаю, что это возможно к дисплей пробел в большинстве редакторов, таким образом, должна быть опция доступности где-нибудь для разговора их.

Сбой, что, существует pybraces, который был записан как розыгрыш, но мог бы на самом деле быть полезен для Вас с небольшим количеством работы.

6
ответ дан John Millikin 5 November 2019 в 17:26
поделиться

Я ценю Вашу проблему, но думаю, что Вы определяете реализацию вместо проблемы, в которой Вы нуждаетесь решенный. Вместо того, чтобы преобразовать в фигурные скобки, как насчет того, чтобы работать над путем к Вашей программе экранного доступа, чтобы сказать Вам уровень отступа?

, Например, некоторые люди работали над синтаксисом энергии, окрашивающим для представления уровней отступа Python. Возможно, измененный синтаксис, окрашивающий, мог произвести что-то, что Ваша программа экранного доступа считает?

4
ответ дан andy 5 November 2019 в 17:26
поделиться

Я использую затмение с pydev расширениями, так как это - IDE, с которым у меня есть большой опыт. Я также ценю умное добавление отступа, которое это предлагает для кодирования если операторы, циклы, и т.д. Я настроил pindent.py сценарий как внешний инструмент, что я могу работать на в настоящее время фокусируемом модуле Python, который делает мою жизнь легче, таким образом, я вижу то, что закрывается где с необходимостью постоянно проверить добавление отступа.

3
ответ дан Jared 5 November 2019 в 17:26
поделиться

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

Моя рекомендация состояла бы в том, чтобы настроить Вашу программу экранного доступа для объявления о вкладках. Это не является столь раздражающим, как это звучит, так как это только сказало бы "отступ 5", а не "вкладка вкладки вкладки вкладки вкладки". Кроме того, добавление отступа было бы только считано каждый раз, когда оно изменилось, таким образом, Вы могли пройти весь блок кода, не слыша уровня отступа. Таким образом слушание добавления отступа не является более подробным, чем слушание фигурных скобок.

, Поскольку я не знаю, какую операционную систему или программу экранного доступа Вы используете, я, к сожалению, не могу дать точные шаги для достижения этого.

1
ответ дан Saqib 5 November 2019 в 17:26
поделиться

Edsger Дейкстра использовал if ~ fi и do ~ od в своем «Защищенном командном языке», они, по всей видимости, происходят из Algol68 . Также было несколько примеров защищенных блоков Python, используемых в RosettaCode.org . охраняемые блоки if / fi, do / od & try / yrt вместе с точкой с запятой ";" разделить заявления. Отлично подходит для однозначных списков журналов или вырезания / вставки с веб-страниц.

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

0
ответ дан 24 November 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: