Как анализировать структуры таблиц в Python [duplicate]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

74
задан Martijn Pieters 7 June 2014 в 17:01
поделиться

2 ответа

Это Python3 bytes literal . Этот префикс отсутствует в Python 2.5 и старше (он эквивалентен простой строке 2.x, а простая строка 3.x эквивалентна литералу с префиксом u в 2.x). В Python 2.6+ он эквивалентен простой строке, для совместимости с 3.x .

48
ответ дан wRAR 18 August 2018 в 19:13
поделиться

Префикс b означает bytes строковый литерал .

Если вы видите, что он используется в исходном коде Python 3, выражение создает bytes object , а не обычный объект Unicode str . Если вы видите, что это отражено в вашей оболочке Python или как часть списка, dict или другого содержимого контейнера, то вы видите объект bytes, представленный с использованием этой нотации.

bytes объекты в основном содержат последовательность из целых чисел в диапазоне 0-255, но если они представлены, Python отображает эти байты как кодовые точки ASCII, чтобы облегчить чтение их содержимого. Любые байты вне диапазона для печати символов ASCII отображаются как escape-последовательности (например, \n, \x82 и т. Д.).

Поскольку объект bytes состоит из последовательность целых чисел, вы можете построить объект bytes из любой другой последовательности целых чисел со значениями в диапазоне 0-255, например, список:

bytes([72, 101, 108, 108, 111])

bytes model двоичный данных , включая закодированный текст . Если ваше значение bytes содержит текст, вам необходимо его сначала декодировать, используя правильный кодек. Например, если данные кодируются как UTF-8, вы можете получить значение Unicode str с помощью:

strvalue = bytesvalue.decode('utf-8')

И наоборот, чтобы перейти от текста в объекте str к bytes вам нужно закодировать . Вам нужно решить, какую кодировку использовать; по умолчанию используется UTF-8, но то, что вам нужно, сильно зависит от вашего прецедента:

bytesvalue = strvalue.encode('utf-8')

Вы также можете использовать конструктор bytes(strvalue, encoding), чтобы сделать то же самое.

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

Python 2, версии 2.6 и 2.7 также поддерживают создание строки литералов с использованием синтаксиса строки b'..' string, чтобы облегчить выполнение кода, который работает как на Python 2, так и на 3.

62
ответ дан Martijn Pieters 18 August 2018 в 19:13
поделиться
Другие вопросы по тегам:

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