我有一些代码,它读取文本文件并以文本中的TLA数量输出多少行包含文本的百分比。
import re
total_lines = 0
matched_lines = 0
for line in open("sentences.txt"):
total_lines += 1
matched_lines += bool(re.search(r"\b[A-Z]{3}\b", line))
matched_lines += bool(re.search(r"\b[A-Z]\\.[A-Z]\\.[A-Z]\b", line)) # DOES NOT WORK
print('{}% of sentences contain a TLA'.format(round(float(matched_lines) / total_lines * 100, 1)))
我想要做的就是让TLA在他们之间完全停止。所以就像现在一样,它算上WWW,但我也希望它能算上W.W.W。
答案 0 :(得分:2)
您应该\.
而不是\\.
。
在Python中,字符串外的r
会生成raw string literal。原始字符串文字的好处是反斜杠(\
)对Python来说并不特殊,这意味着它更容易传递到特殊的re
。
在这两行中你使用的是原始字符串文字(好!),因此\b
指定了一个单词边界。但是,\\.
正在寻找\
后跟任何字符。你想要的是\.
这是一个文字.
。