使用Regex-Python计算一行中的三个字母首字母缩略词
我需要用python编写一个程序来查看给定的文件。假设acronyms.txt,然后返回至少包含1个三字母缩写词的行数的百分比值。 例如:使用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最简单 编辑: 我已经完成了代码,但我需要它来识别它们之间
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等首字母缩写。