我刚刚编写了一个函数,该函数将查看文本文件并计算文本文件中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时,它将在变量T上加1,否则将为False变量加1。尝试运行该程序后,解释器返回错误:错误的转义符\ C。这个错误是什么意思?我的代码是什么引起的呢?
答案 0 :(得分:2)
正则表达式的第一部分中有\C
r'^ATOM\s+\d+\s+\CA
您应该只写CA
r'^ATOM\s+\d+\s+CA
没有转义。
稍后您与\T
相同。
\X
表示转义的X
,大部分时间是regex中的特殊序列,例如\d
代表数字,\s
代表空格。