如何将字符串拆分为标记?

2023-11-26

如果我有一个字符串

'x+13.5*10x-4e1'

我怎样才能将它分成以下令牌列表?

['x', '+', '13', '.', '5', '*', '10', 'x', '-', '4', 'e', '1']

目前我正在使用 shlex 模块:

str = 'x+13.5*10x-4e1'
lexer = shlex.shlex(str)
tokenList = []
for token in lexer:
    tokenList.append(str(token))
return tokenList

但这返回:

['x', '+', '13', '.', '5', '*', '10x', '-', '4e1']

所以我试图将字母与数字分开。我正在考虑获取包含字母和数字的字符串,然后以某种方式拆分它们,但不确定如何执行此操作或如何将它们全部添加回列表中与其他字符串。令牌保持顺序很重要,而且我不能有嵌套列表。

在理想的世界中,e 和 E 不会以同样的方式被识别为字母,所以

'-4e1'

会成为

['-', '4e1']

but

'-4x1'

会成为

['-', '4', 'x', '1']

有人可以帮忙吗?


使用正则表达式模块split()函数,分割于

  • '\d+'-- 数字(数字字符)和
  • '\W+'-- 非单词字符:

CODE:

import re

print([i for i in re.split(r'(\d+|\W+)', 'x+13.5*10x-4e1') if i])

OUTPUT:

['x', '+', '13', '.', '5', '*', '10', 'x', '-', '4', 'e', '1']

如果您不想分隔点(作为表达式中的浮点数),那么您应该使用:

  • [\d.]+-- 数字或点字符(尽管这允许您编写:13.5.5

CODE:

print([i for i in re.split(r'([\d.]+|\W+)', 'x+13.5*10x-4e1') if i])

OUTPUT:

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

如何将字符串拆分为标记? 的相关文章

随机推荐

  • 如何确保只在 virtualenv 中调用 pip?

    当我不在 virtualenv 中时 如何防止意外调用 pip 我写了下面的脚本称为pip并将其添加到我的 bin 这是在我的 pip 之前 PATH This script makes sure I don t accidentally
  • Application.Current.Shutdown() 没有

    标题就是关于这个的 WPF 应用程序 带有一些用于 IPC 的 WCF 内容 我打电话Application Current Shutdown 并且应用程序继续愉快地运行 我想Shutdown本来应该是势不可挡的 也许是因为它是从后台线程调
  • 为什么 docker exec 结合 STDERR 和 STDOUT 流

    这是使用输出 stderr 的示例docker exec 并将输出发送到 STDOUT docker exec t 09b24cd7fa69 ls nosuchfile 1 gt docker out 2 gt docker err cat
  • R 舍入到最接近的 0.5 或 0.1

    我有一个股票价格数据集 已四舍五入到小数点后两位 1234 56 我现在正在尝试四舍五入到每只股票都不同的特定值 这里有些例子 Current Stock Price Minimum Tick Increment Desired Outpu
  • python2 和 python3 之间的可移植元类

    我正在尝试让 python2 程序在 python3 中工作 它具有以下元类定义 这在 Py2 上运行得很好 让它与 py2 和 py3 兼容的 最佳 方法是什么 它在单元测试中失败了 try raise Actor DoesNotExis
  • Java是“按引用传递”还是“按值传递”?

    我一直认为Java使用引用传递 然而 我读到一篇博文它声称 Java 使用值传递 我认为我不明白作者所做的区分 解释是什么 术语 按值传递 和 按引用传递 有特殊之处 精确定义计算机科学中的含义 这些含义与许多人第一次听到这些术语时的直觉不
  • 在“/kafka/kafka_2.12-2.3.0/config/zookeeper_jaas.conf”中找不到名为“Server”的 JAAS 配置节

    当我从 kakfa 2 12 2 3 0 中的包运行 Zookeeper 时 出现以下错误 export KAFKA OPTS Djava security auth login config kafka kafka 2 12 2 3 0
  • 在 AngularJS 中使用 ngInfiniteScroll 指令实现反向无限滚动

    我想使用ngInfiniteScroll来自这里的指令 http binarymuse github io ngInfiniteScroll 在我的 Angular js 应用程序中实现反向无限滚动 就像在聊天小部件中一样 然而 该指令的文
  • Prism中如何控制模块初始化的顺序

    我将 Prism V2 与 DirectoryModuleCatalog 结合使用 并且需要按特定顺序初始化模块 所需的顺序由每个 IModule 实现上的属性指定 这样 当每个模块初始化时 它们会将其视图添加到 TabControl 区域
  • 图像顶部的波纹效果 - Android

    我一直在我最新的业余项目中尝试波纹动画 我在寻找 优雅 的解决方案来在某些情况下使用它来处理触摸事件时遇到了一些麻烦 即图像 尤其是列表 网格和回收视图中的图像 动画几乎总是在视图后面动画 而不是在视图之上 这在按钮和 TextView 中
  • iOS:向上滚动刷新

    许多 iOS 应用程序都有 向上滚动刷新 功能 例如 Twitter 应用程序 如果向上滚动超出页面或表格的开头 您将收到一条消息 解释如何使用该功能 该控制器不是来自苹果 但许多应用程序似乎都使用它 有人告诉我它是由程序员发布供公众使用的
  • Python:选择一个元素而不进行替换

    我想从字符串中随机切片字母 给定 s 你好 我想从 s 中选取元素而不进行替换 但保留索引号 例如 gt gt gt random sample s len s w h o d y 接近我想要的 但我实际上更喜欢类似的东西 w 2 h 0
  • JavaFX:如何检测是否按下了某个键?

    我正在与Timelines并希望能联系到一些KeyPress舞台上的事件可能会改变时间线在其运行过程中更改属性的方式 我知道如何区分按下的键和我想听的键 但需要知道如何确定某个键是否刚刚被按下一次 例如打字 或者某个键是否被按住较长时间一段
  • 创建松耦合/可扩展的软件架构

    我已经研究这个好几个星期了 我目前正在设计一个松耦合架构设计采用n层 3层 方法和工厂设计方法 我的目标是将每个客户端的业务逻辑 ClientA DLL ClientB DLL 放在单独的命名空间中 以便项目横向扩展 这意味着我可以修改 删
  • jQuery UI 多选小部件清除所有复选框

    希望能快一点 我需要在页面上单独按钮的单击事件中触发 uncheckAll 事件 我尝试了以下操作 masterProviderOrgsListBox multiselect uncheckAll 但这不是公认的方法 我基本上想触发与单击标
  • 无法编译 Eigen SVD 的示例

    我正在尝试编译提供的示例本征 雅可比SVD我收到以下错误 usr local include eigen3 Eigen src SVD JacobiSVD h In instantiation of Eigen JacobiSVD
  • 等待每个 jQuery

    我正在尝试使 div 淡入 淡出 该 div 位于each 语句中 问题是在淡入 淡出完成之前调用下一个项目 div one div div two div div three div
  • 如何向轮子添加额外的文件?

    如何控制轮子中包含哪些文件 它出现MANIFEST in不被使用python setup py bdist wheel UPDATE 我对从源代码包安装与从轮子安装之间的区别是错误的 源发行版包括中指定的文件MANIFEST in 但是安装
  • 如何将 JavaScript 变量传递给 PHP?

    我想使用表单中的隐藏输入将 JavaScript 变量传递给 PHP 但我无法获得的值 POST hidden1 into salarieid 有什么不对 这是代码
  • 如何将字符串拆分为标记?

    如果我有一个字符串 x 13 5 10x 4e1 我怎样才能将它分成以下令牌列表 x 13 5 10 x 4 e 1 目前我正在使用 shlex 模块 str x 13 5 10x 4e1 lexer shlex shlex str tok