使用Regex-Python计算一行中的三个字母首字母缩略词

使用Regex-Python计算一行中的三个字母首字母缩略词,python,regex,python-3.x,acronym,Python,Regex,Python 3.x,Acronym,我需要用python编写一个程序来查看给定的文件。假设acronyms.txt,然后返回至少包含1个三字母缩写词的行数的百分比值。 例如: NSW is a very large state. It's bigger than TAS. but WA is the biggest! 阅读后,应返回66.7%,因为66.7%的行包含三个字母的首字母缩写。如您所见,它也四舍五入到第一个小数位。我对regex不是很熟悉,但我认为使用regex最简单 编辑: 我已经完成了代码,但我需要它来识别它们之间

我需要用python编写一个程序来查看给定的文件。假设acronyms.txt,然后返回至少包含1个三字母缩写词的行数的百分比值。 例如:

NSW is a very large state.
It's bigger than TAS.
but WA is the biggest!
阅读后,应返回66.7%,因为66.7%的行包含三个字母的首字母缩写。如您所见,它也四舍五入到第一个小数位。我对regex不是很熟悉,但我认为使用regex最简单

编辑:

我已经完成了代码,但我需要它来识别它们之间带有点的首字母缩略词,例如N.S.W应该被识别为首字母缩略词。我该怎么做

任何帮助都将不胜感激

您可以执行以下操作:

import re
cnt = 0
with open('acronyms.txt') as myfile:
    lines = myfile.readlines()
    length = len(lines)
    for line in lines:
        if re.search(r'\b[A-Z]{3}\b', line) is not None:
            cnt += 1

print("{:.1f}%".format(cnt/length*100))

r'[A-Z]{3}'
匹配一行中的三个(且仅三个)大写字母。如果找到搜索,则添加计数

然后我们只需将计数除以行的长度,然后按您所示打印结果。

您可以执行以下操作:

import re
cnt = 0
with open('acronyms.txt') as myfile:
    lines = myfile.readlines()
    length = len(lines)
    for line in lines:
        if re.search(r'\b[A-Z]{3}\b', line) is not None:
            cnt += 1

print("{:.1f}%".format(cnt/length*100))

r'[A-Z]{3}'
匹配一行中的三个(且仅三个)大写字母。如果找到搜索,则添加计数


然后我们只需将计数除以行的长度,然后按您所示打印结果。

您可以执行以下操作:

total_lines = 0
matched_lines = 0
for line in open("filename"):
    total_lines += 1
    matched_lines += bool(re.search(r"\b[A-Z]{3}\b", line))
print "%f%%" % (float(matched_lines) / total_lines * 100)

注意搜索模式中的“\b”——它匹配单词开头或结尾的空字符串。它有助于防止首字母缩写词长度超过3('asdf asdf asdf')或首字母缩写词位于单词内('asdfASDasdf')的不必要匹配。

您可以执行以下操作:

total_lines = 0
matched_lines = 0
for line in open("filename"):
    total_lines += 1
    matched_lines += bool(re.search(r"\b[A-Z]{3}\b", line))
print "%f%%" % (float(matched_lines) / total_lines * 100)

注意搜索模式中的“\b”——它匹配单词开头或结尾的空字符串。它有助于防止首字母缩写词长度超过3('asdf asdf asdf')或首字母缩写词位于单词内部('asdfASDasdf')的不必要匹配。

我喜欢上面的内容,但我如何使其包含标点符号?我需要它匹配N.S.W作为首字母缩略词。我该怎么做?@user2655778,使用其他正则表达式。类似r“\b([A-Z]\){3}”的东西。我喜欢上面的内容,但如何使其包含标点符号?我需要它匹配N.S.W作为首字母缩略词。我该怎么做?@user2655778,使用其他正则表达式。类似于r“\b([A-Z]\){3}”。这也将匹配4、5等首字母缩写。这也将匹配4、5等首字母缩写。