使用python读取文件,将每一行中“PSNR”后的数字提取出来并放到一个列表里
时间: 2023-06-26 17:03:44 浏览: 58
可以使用Python的字符串操作和正则表达式来实现这个功能。具体步骤如下:
1. 打开文件,读取每一行数据;
2. 在每一行数据中使用正则表达式查找到“PSNR”后的数字;
3. 将数字添加到列表中;
4. 关闭文件。
下面是一个示例代码:
```python
import re
psnr_list = []
with open('file.txt', 'r') as f:
for line in f:
match = re.search(r'PSNR\s+(\d+\.?\d*)', line)
if match:
psnr = float(match.group(1))
psnr_list.append(psnr)
print(psnr_list)
```
其中,`file.txt`是要读取的文件名,可以根据实际情况进行修改。正则表达式`r'PSNR\s+(\d+\.?\d*)'`用于匹配“PSNR”后的数字,其中`\s+`表示匹配一个或多个空格,`\d+\.?\d*`表示匹配一个或多个数字,可能包含一个小数点(可选),后面跟着零个或多个数字。`match.group(1)`表示提取出匹配到的数字。最终输出的是一个包含所有PSNR值的列表。
相关问题
使用python读取文件,将每一行中“PSNR”后的小数提取出来并放到一个列表里
可以使用正则表达式来提取每一行中的"PSNR"后的小数。下面是一个示例代码:
```python
import re
psnr_list = []
with open("file.txt", "r") as f:
lines = f.readlines()
for line in lines:
match = re.search(r"PSNR: (\d+\.\d+)", line)
if match:
psnr = float(match.group(1))
psnr_list.append(psnr)
print(psnr_list)
```
这个代码假设你要读取的文件名为"file.txt",并且每一行中都有"PSNR"后的小数。它会将每一行中的小数提取出来,并将它们放到一个列表中。
帮我用Python写一个计算psnr的函数
当然,我可以帮您写一个计算 PSNR 的 Python 函数。PSNR 是衡量图像或视频质量的指标之一,表示峰信噪比。以下是这个函数:
```python
import math
import cv2
def psnr(img1, img2):
"""
计算两个图像之间的 PSNR。
"""
mse = ((img1.astype("float") - img2.astype("float")) ** 2).mean()
if mse == 0:
return float("inf")
return 20 * math.log10(255.0 / math.sqrt(mse))
```
其中,`img1` 和 `img2` 分别是两个要比较的图像,`cv2.imread()` 函数可以读取图像文件。这个函数返回两个图像之间的 PSNR 值。如果 PSNR 值越高,表示两张图像之间的相似度越高。