文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串

我搜索支持多行字符串的基于文本的数据格式。

JSON不允许多行字符串:

>>> import json

>>> json.dumps(dict(text='first line

second line'))

'{"text":"first line\

second line"}'

我想要的输出:

{"text":"first line

second line"}

这个问题是关于输入和输出的。 数据格式应该可以使用vi,emacs或notepad等编辑器进行编辑。

我不在乎是否使用简单的引号"或tripple引号(如在Python中)"""。

是否有一个易于人类可读的文本数据交换格式支持这个?

用例

我想用多行字符串vi编辑数据。 如果数据是json格式,这不好玩。

你能详细说明数据格式/目的,即复杂的结构或一些设置/配置文件等。

@NabeelAhmed我想用它进行配置。 许多应用程序发明了自己的配置语言。 我想避免这种情况。 但是json和ConfigParser并不满足我。 Json不允许带换行符的字符串(仅 n)和ConfigParser不允许嵌套数据结构。 我缺少的下一件事:验证(但这是一个不同的主题)。 亲爱的Nabeel,如果有遗漏,请留下新评论。

我想如果你可以替换转储结果,那么结果应该是正确的。data = json.dumps(dict(text='first line

second line')) data = data.replace('\

', '

') print(data)

我认为你应该考虑YAML格式。它支持块表示法,它能够保留这样的换行符

data: |

There once was a short man from Ealing

Who got on a bus to Darjeeling

It said on the door

"Please don't spit on the floor"

So he carefully spat on the ceiling

对于任何类型的编程语言都有很多解析器,包括python(即pyYaml)。

还有一个巨大的优势,任何有效的JSON都是YAML。

赞成为打油诗。

你评论的答案:

I want to use it for configuration. A lot of applications invent

their own configuration language. I want to avoid this. But json and

ConfigParser don't satisfy me. Json does not allow strings with

newlines (only

) and ConfigParser does not allow nested data

structures. Next thing that I am missing: Validation (But this is a

different topic).

ConfigParser,ConfigObj或YAML(PyYAML)有3个主要选项 - 每个选项都有其特定的优点和缺点。对于您的用例即配置文件,所有3个优于JSON。

现在进一步说,哪一个更好取决于你想要在conf文件中存储什么。

ConfigObj - 用于配置和验证(您的用例):

ConfigObj非常简单,然后使用YAML(也就是ConfigParser)。支持默认值和类型,还包括验证(优于ConfigParser)。

ConfigObj简介

When you perform validation, each of the members in your specification

are checked and they undergo a process that converts the values into

the specified type. Missing values that have defaults will be filled

in, and validation returns either True to indicate success or a

dictionary with members that failed validation. The individual checks

and conversions are performed by functions, and adding your own check

function is very easy.

附:是的,它允许多行值。

有用的网址:

一个简短的ConfigObj教程

ConfigObj 5简介和参考

在比较YAML与ConfigParser和ConfigObj之间有可靠的SO答案:

什么更好,ConfigObj或ConfigParser?

ConfigObj / ConfigParser与使用YAML for Python设置文件

如果你对标记开销没问题,可以使用ElementTree(标准库)或lxml的XML:

数据

Lorem

Ipsum

Dolor

脚本

import xml.etree.ElementTree

root = xml.etree.ElementTree.parse('data.xml').getroot()

for child in root:

print(child.tag, child.attrib, child.text)

产量

string {} Lorem

Ipsum

Dolor

如果文件仅由Python使用(忽略交换),您可以简单地将数据放在python脚本文件中并将其作为模块导入:

数据

datum_1 =""" lorem

ipsum

dolor

"""

datum_list = [1,"""two

liner"""]

datum_dict = {"key": None,"another": [None, 42.13]}

datum_tuple = ("anything","goes")

脚本

from data import *

d = [e for e in locals() if not e.startswith("__")]

print( d )

for k in d:

print( k, locals()[k] )

产量

['datum_list', 'datum_1', 'datum_dict', 'datum_tuple']

datum_list [1, 'two

liner']

datum_1  lorem

ipsum

dolor

datum_dict {'another': [None, 42.13], 'key': None}

datum_tuple ('anything', 'goes')

更新:

代码与字典理解

from data import *

d = {e:globals()[e] for e in globals() if not e.startswith("__")}

for k in d:

print( k, d[k] )

ini格式也支持多行字符串; Python stdlib中的configparser可以处理它。请参阅https://docs.python.org/3/library/configparser.html#supported-ini-file-structure。

如果您使用的是Python 2,我实际上认为json可以满足您的需求。您可以在解码和加载json时使用string-escape对其进行解码和编码:

import json

config_dict = {

'text': 'first line

second line',

}

config_str = json.dumps(config_dict).decode('string-escape')

print config_str

config_dict = json.loads(config_str.encode('string-escape'))

print config_dict

输出:

{"text":"first line

second line"}

{u'text': u'first line

second line'}

因此,您可以使用解码后的字符串来编辑JSON,包含换行符,并在读取时,只需使用string-escape进行编码即可获取字典。

不确定我是否正确理解了你的问题,但你不是要求这样的事吗?

my_config = {

"text":"""first line

second line"""

}

print my_config

这是什么样的数据格式? 你展示了Python的来源。 这已经是用户"句柄"的答案。

@guettli哦,没错,我的观点与"处理"用户完全相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑屏幕卡住了按什么都没反应_手机突然“死机”了关机也不行,怎么按都没反应,怎么办?...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅,请放心关注。人有生老病死,手机也可能遇到死机黑屏的问题。在手机众多的“疑难杂症”中…

python中哪里用到缩进_建筑防火中各类门的总结归纳!乙级门?甲级门?都哪里用到了!...

大家在学习防火部分时,会遇到各种场所设置不同耐火性能的防火门,很杂乱的感觉,今天这里就好好总结一下,希望对大家能有帮助!一:双设门1.防烟楼梯间:此处的防烟楼梯间分为两种:一种是…

linux 打开php服务器文件夹,Linux下如何查看文件和文件夹大小

《Linux下如何查看文件和文件夹大小》要点:本文介绍了Linux下如何查看文件和文件夹大小,希望对您有用。如果有疑问,可以联系我们。相关主题:服务器配置1 Linux下查看文件和文件夹大小当磁盘大小超过标准时会有报警提示&#xff0c…

android media apex_APEX英雄主播即将登陆时代广场?人气十强介绍!

5月6日,在经过14天短暂而激烈的战斗后,由小葫芦星球联合海外fanx基金会共同举办的APEX英雄篇主播C位战「人气主播榜」率先顺利收官。而在明天即5月8日中午12点将准时开启本次APEX英雄篇主播C位战支线——「潜力主播榜」,前三强选手也同样能够…

linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据

问题起因:解决乱码问题,及解决PHP调用python外部程序的权限问题数据中带有中文,数据来自python读取微软数据库mssql2005 server的数据操作注意事项主要有两点:1.python返回的编码必须为utf-8(1) 必须导入codecs模块,操作代码如…

实时获取滚动条的高度_适用于星上快速处理的雷达高度计有效波高反演技术

卫星雷达高度计的主要观测参数之一为有效波高,数据产品中其数值的确定通过波形重跟踪来实现(Retracking),波形重跟踪的实现主要通过最大似然迭代完成,其主要的反演公示为W(t) PFS(t)*qs(t)*sr(t)。式中包括:高度计海面回波由平坦…

基于python的modbus协议编程_通往未来的网络可编程之路:Netconf协议与YANG Model

近年来,随着全球云计算领域的不断发展与业务的不断增长,促使网络技术也不断发展,SDN技术应运而生,从最初的基于Openflow的转发与控制分离的核心思想,人们不断的去扩展SDN的外延,目前,人们可以达…

php new static 效率,PHP中new static()与new self()的比较

今天在coding的时候,发现了 new static(),觉得实例化的地方不是应该是 new self()吗?查询了一下才知道两者的区别:1)在有子类集成的时候,两者的表现不一样2)php 5.2及以下的版本不支持 new static()的语法简单通俗的来说, self就是…

mfc color 亮度_双十一4K投影仪怎么选?小心别掉“亮度坑” - 电视

导读:  不少影音爱好者计划在双十一期间购入4K投影仪,组建家庭影院、升级视觉享受,却因为选购产品亮度不足,让期待落空,还耗费时间、精力。投影仪亮度不足,画面看起来像是蒙上一层纱,不清晰&a…

oracle归档模式备份恢复,oracle归档模式备份恢复

Oracle归档模式1Oracle归档模式设置1.1以系统管理员身份登录sqlplus /nologSQL>connect sys/oracle as sysdba;Connected.1.2检查当前数据库是否为归档模式SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_…

dosbox edit.exe 如何使用_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...

宅家里一个月,“闭关修炼”的你是不是正在为金三银四跳槽季发愁呢?小编今天说的这富含的15个互联网大厂Java高级工程师核心面试问题整理!内容包括:kafka面试题及解析18道ZooKeeper面试题及解析28道Linux 面试真题及解析45道MySQL面…

3三星闪存刷梅林_三星电子副会长李在镕造访西安

5月18日,陕西省委书记胡和平、省长刘国中在西安会见了三星电子副会长李在镕。Source:陕西日报胡和平表示,当前,陕西疫情防控取得阶段性重要成果,经济社会秩序加快恢复,包括三星在内的外资企业保持良好运行态…

stata中介效应的sobel检验_SPSS进行中介效应检验的实战操作与分析——杏花开生物医药统计...

中介变量( Mediator) 是一个重要的统计概念,如果自变量X通过某一变量M对因变量Y产生一定影响,则称M为X和Y的中介变量。研究中介作用的目的是在已知X和Y关系的基础上,探索产生这个关系的内部作用机制。在这个过程中可以把原有的关于同一现象的…

oracle复制一个表的结构图,Oracle复制表结构

Oracle复制表结构如下&#xff0c;表a是数据库中已经存在的表&#xff0c;b是准备根据表a进行复制创建的表&#xff1a;1、只复制表结构的sqlcreate table b as select * from a where 1<>12、即复制表结构又复制表中数据的sqlcreate table b as select * from a3、复制表…

鼠标图标怎么自定义_酷鱼魔鼠——给鼠标添加酷炫的特效

酷鱼魔鼠是由酷鱼软件开发的一款非常有趣的鼠标特效软件。软件可以在你移动或者点击鼠标的时候&#xff0c;展示非常酷炫华丽的鼠标移动轨迹和点击特效。软件提供了非常多的鼠标动作特效&#xff0c;可以自定义设置鼠标移动、按下、双击、单机、点击桌面图标时的特效效果。并且…

uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言

分享本文&#xff0c;介绍下更接近硬件底层的C语言与汇编&#xff0c;解释 CPU 如何执行代码。高级语言与低级语言学习编程其实就是学习与计算机交流的语言。因为计算机不理解人类语言&#xff0c;通过编译器把人类写的代码转成二进制代码&#xff0c;才能在机器上运行。掌握了…

oracle循环异常跳过,oracle异常处理00103 loop异常继续循环 异常处理选点

loop循环希望异常处理后继续&#xff0c;异常处理选点很重要。CREATE OR REPLACE PROCEDURE P_G_ZTE_CELL_SUM41(V_BEGIN IN VARCHAR,V_END IN VARCHAR) ASV_EXIST INT;V_TIME_BEGIN DATE : TO_DATE(V_BEGIN, YYYY-MM-DD HH24);V_TIME_END DATE : TO_DATE(V_END, YYYY…

delphi xe http 收不到反馈消息_好消息!浦东这个小区3幢多层住宅都要加装电梯啦→...

原标题&#xff1a;好消息&#xff01;浦东这个小区3幢多层住宅都要加装电梯啦→好消息&#xff01;东明路街道这个小区要加装电梯&#xff0c;还是3个&#xff01;规划设计方案公示中快和小布一起看看吧&#xff01;▽环林东路879弄加装电梯项目建设单位&#xff1a;上海市浦东…

php调用美图接口,网易美图 API 接口调用与请求方法详细教程

原标题&#xff1a;网易美图 API 接口调用与请求方法详细教程网易美图 API 接口在网上已经很多且大都封装成了 API 供别人调用。支持前台跨域请求&#xff0c;以POST方式提交图片即可。网易美图 API 接口会随机更新一张美图&#xff0c;你可以选择调用本站的接口&#xff0c;也…

nlp 财务提取_RPA,智慧财务时代的“珍妮纺织机”来了?

智慧财务020社群与知识分享&#xff5c;上方蓝字星标置顶订阅&#xff5c;转载商务合作请添加首财君微信&#xff1a;cfo_tian昨日重磅《百亿存款谜局2》新戏码下的资管拷问一文秒懂财务机器人(RPA)的拐点和跳点。文 | 首财君【原创】出品 | 首席财务官(ID&#xff1a;cfoworld…