gpt4 book ai didi

python - 如何解析简单的带引号的字符串(处理转义)

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:27 25 4
gpt4 key购买 nike

注意:我知道这应该非常简单。它不是。要么就是我傻了但我努力了。

我想做的事情很简单。我有一个字符串,里面有字符串,用,分隔,用'引用。我想解析它们。考虑 \'\\ 的存在。

显然,我想以最简单、最优雅、最巧合的方式来做。

现在,我们来看看一些失败的尝试:

  • “我知道,我会使用 json!”不。JSON 使用 "。太糟糕了。
  • 嗯,正则表达式?这看起来像是在自找麻烦,但是……哦天哪,我的眼睛那些我从互联网上得到的正则表达式!至少他们……不,不支持逃跑。
  • shlex! Python标准库总有解决方案!请参阅下面我失败的尝试。
  • 当前状态:哭泣,编写解析器。

测试输入:'xx\'x,x\\x"xx\\\'\\',1,2,'xx\'x\''
测试输出:xx'x,x\x"xx\'\, 1, 2, xx'x'

def split(s):
import shlex
lex = shlex.shlex(s, posix=True)
lex.whitespace = ','
lex.whitespace_split = True
lex.commenters = ''
return list(lex)

最佳答案

成功了。我之前研究过 csv,但我需要对其进行大量自定义。这是函数

def parse_quoted_strings_list(s):
import csv
return next(csv.reader([s],
skipinitialspace=True,
quoting=csv.QUOTE_NONNUMERIC,
escapechar='\\',
doublequote=False,
quotechar="'"))

这是测试

>>> test = r"""'xx\'x,x\\x"xx\\\'\\',1,2,'xx\'x\''"""
>>> map(print, parse_quoted_strings_list(test))
xx'x,x\x"xx\'\
1.0
2.0
xx'x'

关于python - 如何解析简单的带引号的字符串(处理转义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21666942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com