В Python r'string'
означает сырец строку, то есть строка где побег последовательности недействительны. Сравните, например:
print(r'foo bar\n')
print('foo bar\n')
Во втором случае \n
интерпретирован как обозначение для новой линии, в то время как на сырье строки это просто слэш и письмо n
. Узнайте больше о необработанных строках, например here.
Метод sub
был импортирован из модуля re
. В верхней части кода вы, вероятно, найдете эту строку:
from re import sub # (or `from re import *`)
На мой взгляд, лучше import re
и после доступа sub
как re.sub
, таким образом, он является однозначным.
Первый аргумент sub
является регулярным выражением. Регулярные выражения (регулярное выражение) - большая тема, вы можете найти отличные ресурсы, чтобы их понять. here или here. То, что это особенно регулярное выражение делает:
- определяет класс символов (в квадратных скобках
[
и ]
)
- говорит, что этот символ не является цифрой (
\d
означает цифру, такую же, как 0-9
), и ^
означает отрицание (нет)
- , то он говорит, что этот символ может быть что угодно (точка
.
в регулярном выражении означает любой символ,
так называемый регулярное выражение двигатель будет искать совпадения этого шаблона характера, например, в abc123
будет иметь 3 совпадений: a
, b
и c
. Второй аргумент sub
рассказывает, что заменить эти совпадения. Здесь вы ничего не заменяете (пустая строка, т. Е. Ничего между двумя кавычками: ''
). Третий аргумент sub
содержит строку, в которую вы хотите выполнить эту операцию. Затем результат передается методу или классу под названием Decimal
, вы можете посмотреть это в своем коде и узнать, что он делает.
Не часть ответа, но общие советы, как справиться лучше подобные случаи:
Если вы хотите, чтобы понять базовый код, как это, вы можете импортировать свои методы и попробовать их один за другим , или временно добавьте операторы print()
, перезагрузите модуль и вызовите методы.Например, скажем, ваш модуль называется pricecalculator
, и находится в каталоге с тем же именем, или в файле pricecalculator.py
, то вы идете в этот каталог, откройте оболочку Python и тип:
import imp
import pricecalculator
from pricecalculator import *
Тогда вы можете вызывать любой метод из этого модуля. Скажем, вам интересно, что такое переменная group
, и каков ее третий элемент? Затем добавьте строку print('group: ', group)
или print('type of group: ', type(group))
выше линий в вашем посте, и перезагрузить модуль:
imp.reload(pricecalculator)
from pricecalculator import *
Затем вызывается метод, где код происходит, и вы увидите содержимое переменной печати.
Также, если вы видите метод, и вам интересно, что он делает, попробуйте выяснить, откуда он взялся, какой модуль и посмотреть документацию метода. Например:
import re
# see the documentation:
help(re.sub) # press `q` to return to shell
from re import *
# find the module for a method:
sub.__module__
И попытаться напрямую экспериментировать с методами непосредственно в оболочке, читать документы, попробовать вещи и понимать сообщения об ошибках. Here is a guide что означают все типы ошибок.
Наконец, прежде чем задавать здесь вопрос, всегда думайте: есть ли шанс, что ответы помогут кому-то еще? Попробуйте сформулировать заголовок и вопрос соответственно.
sub был, вероятно, импортирован из https://docs.python.org/3/library/re.html#re.sub –