与缩略语完全停止python

时间:2013-08-17 22:58:41

标签: python regex python-3.x acronym

我有一些代码,它读取文本文件并以文本中的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。

1 个答案:

答案 0 :(得分:2)

您应该\.而不是\\.

在Python中,字符串外的r会生成raw string literal。原始字符串文字的好处是反斜杠(\)对Python来说并不特殊,这意味着它更容易传递到特殊的re

在这两行中你使用的是原始字符串文字(好!),因此\b指定了一个单词边界。但是,\\.正在寻找\后跟任何字符。你想要的是\.这是一个文字.