gpt4 book ai didi

Python:如何使用正则表达式显示文本文件中的最高数字

转载 作者:行者123 更新时间:2023-11-28 18:58:27 25 4
gpt4 key购买 nike

我的任务是显示来自两个不同文本文件的俯 View 。文本文件的格式为"file",后跟路径文件夹、 View 、打开/关闭。我遇到的问题是显示顶部 View 并且 path_folders 的标题必须按字母顺序排列,以防 View 相同。

我已经使用 glob 读取了两个不同的文件。我什至使用正则表达式来确保文件按照预期的方式读取。我也知道我可以使用 sort/sorted 来按字母顺序排列。我主要关心的是显示文本文件中的顶级 View 。

这是我的文件:

文件1.txt

file Marvel/GuardiansOfGalaxy 300 1
file DC/Batman 504 1
file GameOfThrones 900 0
file DC/Superman 200 1
file Marvel/CaptainAmerica 342 0

文件2.txt

file Science/Biology 200 1
file Math/Calculus 342 0
file Psychology 324 1
file Anthropology 234 0
file Science/Chemistry 444 1

**(从格式可以看出,第三个选项卡是views)

输出应该是这样的:

file GameOfThrones 900 0
file DC/Batman 504 1
file Science/Chemistry 444 1
file Marvel/CaptainAmerica 342 0
file Math/Calculus 342 0
...

除此之外,这是我目前正在研究的显示顶部 View 的功能:

records = dict(re.findall(r"files (.+) (\d+).+", files))
main_dict = {}

for file in records:
print(file)
#idk how to display the top views

return main_dict

最佳答案

提取排序条件

首先,您需要获取您希望从每一行中整理出来的信息。您可以使用此正则表达式从行中提取 View 和路径:

>>> import re
>>> criteria_re = re.compile(r'file (?P<path>\S*) (?P<views>\d*) \d*')
>>> m = criteria_re.match('file GameOfThrones 900 0')
>>> res = (int(m.group('views')), m.group('path'))
>>> res
(900, 'GameOfThrones')

排序

现在,只需将整个过程应用到您的文件集即可。因为我们不想要默认搜索,所以我们需要设置搜索函数的 key 参数来帮助它知道我们想要排序的确切内容:

def sort_files(files):
lines = []
for file in records:
for line in open(file):
m = criteria_re.match(line)
# maybe do some error handling here, in case the regex doesn't match
lines.append((line, (-int(m.group('views')), m.group('path'))))
# taking the negative view count makes the comparison later a
# bit more simple, since we can just sort be descending order
# for both view as well as alphabetical path order
# the sorting criteria were only tagging along to help with the order, so
# we can discard them in the result
return [line for line, criterion in sorted(lines, key=lambda x: x[1])]

关于Python:如何使用正则表达式显示文本文件中的最高数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com