我想在API中提供自动字符串格式,例如:

my_api("path/to/{self.category}/{self.name}", ...)

可以替换为格式化字符串中标注的属性值。

如何从Python格式字符串中提取关键字参数:

"non-keyword {keyword1} {{escaped brackets}} {} {keyword2}" => 'keyword1', 'keyword2'

python大神给出的解决方案

您可以使用string.Formatter() class使用Formatter.parse() method解析字符串中的字段:

from string import Formatter

fieldnames = [fname for _, fname, _, _ in Formatter().parse(yourstring) if fname]

演示:

>>> from string import Formatter

>>> yourstring = "path/to/{self.category}/{self.name}"

>>> [fname for _, fname, _, _ in Formatter().parse(yourstring) if fname]

['self.category', 'self.name']

>>> yourstring = "non-keyword {keyword1} {{escaped brackets}} {} {keyword2}"

>>> [fname for _, fname, _, _ in Formatter().parse(yourstring) if fname]

['keyword1', 'keyword2']

您可以进一步解析这些字段名称。为此,您可以使用str._formatter_field_name_split()方法(Python 2)/ _string.formatter_field_name_split()函数(Python 3)(该内部实现的详细信息未公开; Formatter.get_field()在内部使用它)。此函数返回名称的第一部分,将在传递给str.format()的参数中查找该名称的第一部分,并为该字段的其余部分生成一个生成器。

生成器生成(is_attribute, name)元组;如果将姓氏视为属性,则is_attribute为true;如果要使用obj[name]查找,则为false:

try:

# Python 3

from _string import formatter_field_name_split

except ImportError:

formatter_field_name_split = str._formatter_field_name_split

from string import Formatter

field_references = {formatter_field_name_split(fname)[0]

for _, fname, _, _ in Formatter().parse(yourstring) if fname}

演示:

>>> from string import Formatter

>>> from _string import formatter_field_name_split

>>> yourstring = "path/to/{self.category}/{self.name}"

>>> {formatter_field_name_split(fname)[0]

... for _, fname, _, _ in Formatter().parse(yourstring) if fname}

{'self'}

请注意,此函数是Formatter()类的内部实现详细信息的一部分,可以在不通知的情况下从Python进行更改或删除,甚至在其他Python实现中也不可用。

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…Python numpy数据指针地址无需更改即可更改 - python

编辑经过一些摆弄之后,到目前为止,我已经隔离了以下状态:一维数组在直接输入变量时提供两个不同的地址,而在使用print()时仅提供一个地址2D数组(或矩阵)在直接输入变量时提供三个不同的地址,在使用print()时提供两个地址3D数组在直接输入变量时提供两个不同的地址,而在使用print()时仅给出一个(显然与一维数组相同)像这样:>>> …如何打印浮点数的全精度[Python] - python

我编写了以下函数,其中传递了x,y的值:def check(x, y): print(type(x)) print(type(y)) print(x) print(y) if x == y: print "Yes" 现在当我打电话check(1.00000000000000001, 1.0000000000000002)它正在打印:&lt…

python关键词提取_如何从Python格式字符串中提取关键字? - python相关推荐

  1. python判断正负零_【译】格式字符串语法

    前言:本文由Python 3.5.2 Documentation部分章节翻译整理而来 1 >> Format String Syntax str.format()方法和Formatter类 ...

  2. python电话号码对应的字符组合_Python3 在字符串中提取字母+数字组合微信账号、电话等 - pytorch中文网...

    今天处理数据要提取字符串中的微信,字符串中包含中文英文Emoji,标点符号等. python 提取字符串中的电话 提取电话相对简单,多个电话也可以提取 import re desstr = " ...

  3. python 获取年份_如何从Pythondate时间对象中提取年份?

    这个问题的其他答案似乎打上了现场. 现在你怎样才能知道自己没有堆栈溢出? 查看IPython ,这是一个具有标签自动完成function的交互式Python shell. > ipython i ...

  4. excel运行python自定义函数_终于,可以在Excel中直接使用Python!

    大家好,我是早起. 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Notebok都是我每天必用的工具,而且两 ...

  5. php提取数字和字母,php从字符串中提取汉字字母和数字

    首先,这些东西如果对你没有什么意义,不存就好了. 你提取出部分,也没什么用. 完整的存取,mysql是支持的,转换下字符集就好了,utf8mb4是utf8的超集,向下兼容的,修改这个是最完美的解决方法 ...

  6. python文本分析 提取数据含义_从文本字符串中提取数据进行分析

    需求 在进行数据分析的时候,有时候会碰到需要从文本字符串中提取需要的数据来进行分析的情况,这种需求在网络爬虫数据分析非常常见. 比如,需要下列表格"基础薪资规则"字段中提取阶梯单量 ...

  7. python 类库教程_介绍15个好用到哭的python库

    Python视频教程栏目介绍15个好用的python库 推荐(免费):Python视频教程 为什么我喜欢Python?对于初学者来说,这是一种简单易学的编程语言,另一个原因:大量开箱即用的第三方库,正 ...

  8. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  9. python 从字符串中提取数字 re.findall()

    以前老用(.*?)提取数字,今天发现不对了,比如一行数字为: 0 0.248438 0.255556 0.128125 0.194444 用: re.findall('(.*?) (.*?) (.*? ...

最新文章

  1. 3dmax2020安装失败原因及解决方法_电伴热带安装维护,线路断路器跳闸的原因及解决方法...
  2. Oracle 1204 RAC failover 测试 (五)
  3. codevs1085数字游戏(环形DP+划分DP )
  4. Linux find命令详解 【转】
  5. 壁挂炉洗澡怎么调水温_壁挂炉水温太高怎么维修【调节壁挂炉温度】
  6. 计算机电缆执行标准是什么,DJYVP计算机电缆执行标准
  7. Java面试笔试题大全
  8. 目前比较好的跨境电商ERP软件有哪些?这5款打死也要收藏!
  9. welearn随行课堂刷题教程
  10. 京东物流系统架构演进中的最佳实践
  11. Linux设置 鼠标滚轮方向,如何在Ubuntu中反转鼠标滚动方向(又名自然滚动) | MOS86...
  12. Python 在线编译器简单实现
  13. 算法笔记 —— 汉诺塔详解
  14. 多个Ajax请求成功后再执行后续方法
  15. 笔记本拆机实践:加装内存条和固态硬盘
  16. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结
  17. Windows开发:鼠标操作
  18. vue3 ref 和reactive的区别
  19. DataFrame的元素选择与赋值
  20. Citrix 相关资料整理

热门文章

  1. 200+页综述!阐述大规模预训练模型机遇与风险
  2. 如何安装python3.7.2_Python3.7与Python2.7在centos7下兼容并存
  3. 吴恩达深度学习之二《改善深层神经网络:超参数调试、正则化以及优化》学习笔记
  4. 面试准备每日五题:C++(八)——重写重载隐藏、vector相关
  5. pytorch tensor的数据类型
  6. 机器学习实战(十四)Pegasos(原始估计子梯度求解器)
  7. fetch与XHR的区别与优势
  8. 销售联系客户 需要技巧
  9. ajax----serialize()方法注意事项
  10. dataframe drop_Pandas数据结构Series和DataFrame基础详解