迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的 sscanf() 功能

作者:迹忆客 最近更新:2023/06/20 浏览次数:

函数 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() 函数的基本概念。

上一篇:Python 本地服务器

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 本地服务器

发布时间:2023/06/20 浏览次数:150 分类:Python

本篇文章将向我们展示如何在 Python 中创建 HTTP 服务器。 在学习完本篇文章后,我们只需几行代码就可以轻松搭建一个 HTTP 服务器。

Python 中的一行 FTP 服务器

发布时间:2023/06/20 浏览次数:135 分类:Python

FTP 是文件传输协议的缩写。 它允许您通过计算机网络在客户端和服务器之间传输文件。使用 pyftpdlib 在 Python 中创建一行 FTP 服务器

在 Python 中检查 Argparse 的参数

发布时间:2023/06/20 浏览次数:125 分类:Python

本篇文章将讨论 argparse 的使用,我们将使用条件语句和 Python 中的参数名称检查 argparse 中是否存在参数。在 Python 中检查 argparse 的参数

Python 循环缓冲区

发布时间:2023/06/20 浏览次数:51 分类:Python

循环缓冲区是环形缓冲区的另一个名称。 Python 中的高效循环缓冲区。高效的循环缓冲区是一种允许高效插入和删除数据的数据结构。

Cron 类似 Python 中的调度程序

发布时间:2023/06/20 浏览次数:120 分类:Python

本篇文章将介绍调度类似于 Linux 中的 cron 作业的任务。 首先,我们将查看调度模块以在进程内调度中调度我们的作业。

通过 Crontab 执行 Python 脚本

发布时间:2023/06/20 浏览次数:57 分类:Python

在本文中,我们将探讨 Crontab 以及如何使用它来运行 Python 脚本。Linux/Unix/Solaris 中的 Crontab

克隆 Git 存储库的 Python 方法

发布时间:2023/06/20 浏览次数:196 分类:Python

让我们看看我们可以在 Python 环境中克隆 Git 存储库的不同方法。使用 PyCharm 克隆 Git 存储库

在 Python 中计算两个 GPS 点之间的距离

发布时间:2023/06/19 浏览次数:134 分类:Python

计算两个 GPS 点之间的距离是我们可以在 Python 框架内操作的地理和数学练习。 现在让我们看看如何使用 Python 执行此操作。在 Python 中使用 Haversine 公式计算两个 GPS 点之间的距离

Python 中的 Verbose

发布时间:2023/06/19 浏览次数:70 分类:Python

在这个简短的指南中,我们将学习 verbose 以及如何在 Python 中实现它。Python 中的详细信息 详细模式是一种计算功能,也是许多计算机操作系统和编程语言中的通用概念。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便