有一个特定的文件,每个学生的名字都被标记在最后他/她的成绩旁边.我必须判断它是否等于B,然后打印B.然而,我得到了更多的B,因为可能会 Select 将名字包括在B的值中以递增.

import re
def grades():
    with open ("assets/grades.txt", "r") as file:
        grades = file.read()
        

                 # YOUR CODE HERE
    pattern = r"[B$]"
    result = re.findall(pattern, grades)
    return result
    raise NotImplementedError()
    
x = grades()
print(x)

詹姆斯:B 斯图尔特:B 宾尼:A 比利:

我拿到了两个以上的B.我应该得到的是2个B.我在上面的代码中做错了什么?

推荐答案

您的模式是character class,匹配B$字符.

你需要

pattern = r"(?m)B$"

哪里

  • (?m)-相当于re.M/re.MULTILINE标志,使anchors匹配行的开始/结束,而不是整个字符串
  • B-匹配B
  • $-现在,匹配行尾.

Python-3.x相关问答推荐

安装grpcio时出现错误DeproationWarning:pkg_resource

具有多个值的极轴旋转和熔化/取消旋转(反转旋转)操作(Pandas 堆叠/取消堆叠交替/UDF覆盖)

Python避免捕获特定异常

切片时是否在NumPy ND数组中创建新对象?

PySpark每毫秒使用先前的值填充数据

公开数据中的卫星图像网页抓取优化

如何根据索引子列表对元素列表进行分组或批处理?

我想使用命令提示符安装 cv2

如果集合大于 len(x),则 pandas 在重复的行中拆分集合列

安装没有 sudo 权限的 python3 和 pip3

用于 BIG 数组计算的多处理池映射比预期的要慢

Python - 如何从同一台客户端机器运行多个Flask应用程序

TimescaleDB:是否可以从 Python 调用create_hypertable?

如何使 Python3 成为 Geany 中的默认 Python

在计算之前删除包含某些值的组合

AttributeError:LinearRegression 对象没有属性coef_

python 3的蓝牙库

如何遍历某些扩展名的文件?

如何使用 Python 订阅 Websocket API 通道?

将 Python SIGINT 重置为默认信号处理程序