Python 中的 sscanf() 函数

2023-11-18


函数 sscanf() 来自编程语言 C 和 C++。 虽然 Python 没有为此方法提供任何完全等效的方法或库,但可能有其他方法来执行此功能。

这篇 Python 文章将使您更好地理解 sscanf() 必须提供什么以及我们如何在 Python 脚本中模仿它。


Python 中的 sscanf() 功能

sscanf() 方法从已提供的字符串中提取字符串。 这就是我们声明方法的方式:

int sscanf(const char *str, const char *format, ...)

此方法实质上将从字符串中读取格式化输入,并且与 scanf() 不同,sscanf() 的数据是从字符串而不是控制台中读取的。 数据从缓冲区读取到方法声明中作为参数提供的位置地址。

提供的每个参数都指向一个与格式字符串具有相同类型的变量。 该方法返回已成功转换和分配的值。

Python 本身没有 sscanf() 的直接等效库或模块。 但是,有两种方法可以模拟该功能。


使用 re 库中的正则表达式

正则表达式有助于指定字符串的格式或描述字符串的格式,然后可用于验证不同的字符串。 正则表达式可以包含特殊字符和普通字符。

像 A、B、b 或 0 这样的字符是表达式中最简单的普通字符的好例子。 该库还可以按特定顺序搜索字符串或字符列表中的特定字符。

查看下面的示例脚本,它在提供的字符串中搜索字符串 def。

示例代码:

import re
m = re.search('(?<=abc)def', 'abcdef')
m.group(0)

该程序返回 def 作为输出。

也可以在由特殊字符分隔的字符串中搜索字符串。 例如,在下面的脚本中,我们搜索连字符后提供的单词:

示例代码:

m = re.search(r'(?<=-)\w+', 'spam-emails')
m.group(0)

其输出是电子邮件。 用 re 解析的可能性是无穷无尽的!

另一个类似于 re 的库是 regex,它是 API 友好的。 Regex 向后兼容 re 并带有附加功能。

以下是使用正则表达式模块实现的条件模式测试。 当然,我们需要在执行之前导入库。

示例代码:

>>> regex.match(r'(?(?=\d)\d+|\w+)', '123abc')
<regex.Match object; span=(0, 3), match='123'>
>>> regex.match(r'(?(?=\d)\d+|\w+)', 'abc123')
<regex.Match object; span=(0, 6), match='abc123'>

使用Neuron库

Neuron库(不是来自 Python 本身)也可用于在 Python 脚本中导入 sscanf()。 例如,如果我们要运行以下脚本,

from neuron import h
x = h.ref(0)
h.sscanf('0.3', '%f', x)
print(x[0])

结果输出为 0.300000011921

这里有更多示例,我们可以通过神经元库了解 Python 中 sscanf() 的使用,并将每一行的输出添加为注释。

示例代码:

from neuron import h as hoc
string = hoc.ref('')
range_list = [hoc.ref(0) for i in range(50)]
hoc.sscanf("This is a test\n", "%s", string)
print(string[0])
hoc.sscanf("This is a test\n", "%[^\n]", string)
print(string[0])
hoc.sscanf("This is a test\n", "%*s%s", string)
print(string[0])
hoc.sscanf("1 2 3 4 5 6 7 8 9 10",
           "%f%f%f%f%f%f%f%f%f%f%f",
           range_list[0], range_list[1], range_list[2], range_list[3], range_list[4], range_list[5], range_list[6],
           range_list[7], range_list[8], range_list[9], range_list[10], range_list[11], range_list[12])
print('Should only have non-zero values for range_list indices 0 - 9')
for i in range(13):
    print('%d %g' % (i, range_list[i][0]))

从上述两个选项中可以看出,我们可以根据情况使用任一库。 Python 是一种功能广泛、类型快速且美观的语言,它为我们提供了广泛的选项来以 Python 通常独有的方式解析字符串。

re 和 regex 库是语言 vastness 的例子。

我们希望您发现本文有助于理解 Python 中使用的 sscanf() 函数的基本概念。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的 sscanf() 函数 的相关文章

  • Mac OS 上的诗歌安装失败,显示“should_use_symlinks”

    我正在尝试使用以下命令安装诗歌 curl sSL https install python poetry org python3 但它失败了 但有以下例外 例外 此版本的 python 无法在不使用符号链接的情况下创建 venvs 下面是详
  • 如何在 Windows 64 上安装 NumPy?

    NumPy 安装程序在注册表中找不到 python 路径 无法安装 需要 Python 2 5 版本 但在注册表中未找到该版本 OK 我必须修改注册表吗 我已经修改了 PATH 以指向Python25安装目录 我可以检查一下您使用的是什么安
  • Python 3 os.urandom

    在哪里可以找到完整的教程或文档os urandom 我需要获得一个随机 int 来从 80 个字符的字符串中选择一个字符 如果你只需要一个随机整数 你可以使用random randint a b 来自随机模块 http docs pytho
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • 如果未引发异常,则通过 Python 单元测试

    在Python中unittest框架 是否有一种方法可以在未引发异常的情况下通过单元测试 否则会因 AssertRaise 而失败 如果我正确理解你的问题 你could做这样的事情 def test does not raise on va
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • 当数据库不是 Django 模型时,是否可以使用数据库中的表?

    是否可以从应用程序数据库中的表获取查询集 该表不是应用程序中的模型 如果我有一个不是名为 cartable 的模型的表 从概念上讲 我想这样做 myqueryset cartable objects all 有没有相对简单的方法来做到这一点
  • Python SSL X509:KEY_VALUES_MISMATCH

    Python HTTPS server from http server import HTTPServer SimpleHTTPRequestHandler import ssl https stackoverflow com a 408
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这

随机推荐

  • 亚马逊云科技与百川智能发起AI黑客松,共探医疗健康和游戏娱乐领域的前沿应用

    8月31日 亚马逊云科技云创计划成员企业暨基础模型创业公司百川智能 率先通过了 生成式人工智能服务管理暂行办法 备案 即日起面向全社会开放服务 基础模型获准面向公众用户开放服务 意味着有机会基于大量真实用户的调用反馈建立模型迭代的飞轮 其效
  • Linux命令之远程连接ssh

    概述 ssh命令是openssh套件中的客户端连接工具 可以给予ssh加密协议实现安全的远程登录服务器 实现对服务器的远程管理 在脚本中该命令有着重要重要 可用于在远程服务器中执行命令 语法 ssh命令的基本语法如下 ssh 选项 参数 常
  • APP启动页隐私弹窗实现说明

    最近审核严禁 腾讯应用市场要求APP在启动页增加隐私政策和用户协议 用户从腾讯应用市场上下载APP 第一加载的时候弹窗 不然审核就不给过 样式大概如下 用户若点击不同意的时候 无法进入APP内部 下面把实现的代码贴上来 1 加个判断 其他应
  • java eclipse打不开_安装eclipse以后打不开,出现这个图

    方法1 将eclipse发送到桌面快捷方式 然后右键 属性 快捷方式 tab 目标 显示E dev enrionment eclipse eclipse exe 进行如下更改 E dev enrionment eclipse eclipse
  • 基于改进YoloV3卷积神经网络的番茄病虫害检测

    ABSTRACT 番茄在生长过程中受到各种病虫害的影响 如果控制不及时 就会导致减产甚至歉收 如何有效地控制病虫害 帮助菜农提高番茄的产量是非常重要的 而准确地识别病虫害是最重要的 与传统的模式识别方法相比 基于深度学习的病虫害识别方法可以
  • pycharm设置文件标头

    一 设置模板步骤 文件File 设置Settings 编辑器Editor File and Code Templates Python Script 里面设置模板 coding utf 8 Time DATE TIME 人生的事情并不是一帆
  • C++针对ZeroMQ库的选择

    介绍 ZeroMQ 也称为0MQ或 MQ 是一个高性能 低延迟的消息队列库 它为分布式和并发应用程序提供了简洁 高效的通信机制 它是一个开源的库 支持多种编程语言 包括C 和操作系统 ZeroMQ通过使用套接字抽象来实现消息传递 使得它易于
  • 计算机网络学习日记 把码元的振幅化为16个不同等级来传输-为什么要使用信道复用技术?

    奈氏准则 在宽带为W的低通信道中 若不考虑噪声影响 则马原传输的最高速率是2W 传输速率超过此上线 就会出现验证的码间串扰的问题 使接收端对码元的决判成为不可能 假定某信道收奈氏准则的限制最高码元速率为20000码元 秒 如果采用振幅调制
  • 如何使用CSS递归选择所有子元素?

    当元素是某个元素的子元素时 子选择器匹配 子选择器由两个或多个由 gt 分隔的选择器组成 也称为元素 gt 元素选择器 它选择特定父级的所有元素 语法如下 选择所有子元素 element gt element 如果子元素递归选择 则使用以下
  • Python_文件的代码格式

    导入模块 定义全局变量 定义类 定义函数 在代码的最下方 def main pass 根据 name 判断是否执行下方代码 if name main main
  • 图解十大经典机器学习算法入门

    通过本篇文章可以对机器学习的常用算法有个常识性的认识 没有代码 没有复杂的理论推导 就是图解一下 知道这些算法是什么 它们是怎么具体应用的 1 决策树 根据一些 feature 进行分类 每个节点提一个问题 通过判断 将数据分为两类 再继续
  • OPENCV手势识别抓取图片

    PENCV手势识别抓取图片 一位油管的小哥做的项目非常棒 照着写了一个 代码 注意 看好cvzone的版本 太新的版本中有个函数没有 如果找不到这个函数的时候请更换一下库的版本 import cv2 from cvzone HandTrac
  • RESETLOG之后数据文件丢失的RMAN恢复测试

    RESETLOG之后数据文件丢失的RMAN恢复测试 一 场景 在T0时间点做了RMAN全备 随后在T1时间点由于误操作将T0表truncate 在T2时间点通过RMAN的不完全恢复 将数据库恢复到T1时间点 truncate之前 reset
  • 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程、

    概述 苹果的证书繁锁复杂 制作管理相当麻烦 今天决定重置一个游戏项目中的所有证书 做了这么多次还是感觉很纠结 索性直接记录下来 日后你我他查阅都方便 首先得描述一下各个证书的定位 作用 这样在制作的时候心中有谱 对整个流程的把握也会准确一些
  • cmake的aux_source_directory

    一 问题背景 在同一目录下面 有多个源文件的时候 这个时候你不能都往下面第三条命令里面一直手动添加cpp源文件 那工作效率多低啊 cmake minimum required VERSION 2 8 project main add exe
  • 网站虚拟主机是什么?(什么是虚拟主机空间)

    刚入行的新手用户肯定会接触一个叫虚拟主机的空间 特别是建站行业和个人用户使用的很多 不过很多新手用户对虚拟主机空间还是理解的不太明白 下面我们就来聊聊什么是网站虚拟主机空间 什么是虚拟主机 虚拟主机又称虚拟空间 网站空间 它是由单台物理服务
  • Hadoop学习:深入解析MapReduce的大数据魔力(二)

    Hadoop学习 深入解析MapReduce的大数据魔力 二 3 3 Shuffle 机制 3 3 1 Shuffle 机制 3 3 2 Partition 分区 3 3 3 Partition 分区案例实操 3 3 4 WritableC
  • odoo安装启动遇到的问题

    问题 在第一次加载odoo配置文件的时候 启动失败 方法 1 先检查odoo conf的内容 尤其是路径 options This is the password that allows database operations admin
  • 【前端面试】taro面试题总结

    Taro是一个开放式跨端跨框架解决方案 支持使用React Vue js Nerv等框架来开发小程序 H5 react Native等应用 特性 多端转换支持 可以转换到h5 任意app小程序平台 父子组件通信 父组件用import引入子组
  • Python 中的 sscanf() 函数

    文章目录 Python 中的 sscanf 功能 使用 re 库中的正则表达式 使用Neuron库 函数 sscanf 来自编程语言 C 和 C 虽然 Python 没有为此方法提供任何完全等效的方法或库 但可能有其他方法来执行此功能 这篇