Что является причиной ошибки Python 'bad escape \ C'? - PullRequest
0 голосов
/ 16 ноября 2018

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

ATOM     43  CA  LYS A   5      14.038  15.691  37.608  1.00 15.15           C      True
ATOM     52  CA  CYS A   6      16.184  12.782  38.807  1.00 16.72           C      True
ATOM     58  CA  GLU A   7      17.496  12.053  35.319  1.00 14.06           C      False
ATOM     67  CA  VAL A   8      18.375  15.721  34.871  1.00 12.27           C      True
ATOM     74  CA  PHE A   9      20.066  15.836  38.288  1.00 12.13           C      False
ATOM     85  CA  GLN A  10      22.355  12.978  37.249  1.00 12.54           C      False

А вот и мой код

def TFCount(txtFileName):   
    with open(txtFileName, 'r') as e:
        T = 0
        F = 0
        for record in e:
            if(re.search(r'^ATOM\s+\d+\s+\CA\s+\w+\s+\w+\s+\d+\s+\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+\d+\.\d+\s+\w+\s+\T', record)):
                T += 1
            else:
                F += 1
        print(T)
        print(F)

Я прошу прощения, если мое регулярное выражение долго и утомительно читать, но это единственный известный мне способ подсчета числа случаев, когда True встречается в файле. Как вы можете видеть, каждый раз, когда программа встречает True, она добавляет 1 к переменной T, иначе она добавляет 1 к переменной False. После попытки запустить программу интерпретатор возвращает ошибку: bad escape \ C. Что означает эта ошибка? И что в моем коде вызывает это?

1 Ответ

0 голосов
/ 16 ноября 2018

У вас есть \C в первой части регулярного выражения

r'^ATOM\s+\d+\s+\CA

вы должны написать только CA

r'^ATOM\s+\d+\s+CA

без побега.

Позже у вас то же самое с \T.

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

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