如何将字符串去掉引号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字符串去掉引号相关的知识,希望对你有一定的参考价值。
比如将"TextBox"+i.ToString()+".Text" 转换为TextBox1.Text
(i为变量)
ASP.NET
不判断直接去掉所有的双引号:
set "current=!current:"=!"
判断双引号:
set "a=""(你也可以把第一个引号和最后一个引号去掉,不过那样的话注意行尾不要有空格)
if "!current:~0,1!"=="!a!" ...
提示:
你用set currentdir=c:\programs files\不就行了,我一般都这样写,用的时候用"%currentdir%"比较方便.
如果是用户输入的currentdir的话,然后用set currentdir=%currentdir:"=%去掉双引号.
另外,站长团上有产品团购,便宜有保证 参考技术B replace("TextBox","'",""&i.ToString()&".Text"本回答被提问者采纳 参考技术C void Filter(char* pStr, const char pFilter)
int nLen = strlen(pStr);
char* pTmpStr = new char[nLen];
memset(pTmpStr, 0, nLen);
char* pTmp = pTmpStr;
while (*pStr++)
if (cFilter != *pStr)
*pTmp = *pStr;
pTmp++;
*pTmp = '\0';
strcpy(pStr, pTmpStr);
delete pTmpStr;
使用:
Filter(s, c)
去掉引号之间的引号
【中文标题】去掉引号之间的引号【英文标题】:Remove quotation markers between quotation marks 【发布时间】:2019-06-13 03:07:12 【问题描述】:我有一个像这样的json格式的字符串
"1":"abc"abc"abc","2":"xyz"xyz"xyz"
但是如果我想把它转换成json数据,我需要把'"'之间的'"'去掉,得到一个像下面这样的字符串
"1":"abcabcabc","2":"xyzxyzxyz"
我尝试使用 re.sub 来做到这一点,但失败了。任何人都可以帮助我吗? 我的脚本如下:
a='"1":"abc"de"fg","2":"xyz"xyz"xyz"'
r = re.compile(r'(?<!\:)(?<=.+)"|(?<!,)"|"(?!|,)')
b = r.sub('', a)
print(b)
当我运行脚本时,结果如下:
Traceback (most recent call last):
File "./_t1.py", line 5, in <module>
r = re.compile(r'(?<!\:)(?<=.+)"|(?<!,)"|"(?!|,)')
File "/home/emc/ssd/anaconda3/lib/python3.6/re.py", line 233, in compile
return _compile(pattern, flags)
File "/home/emc/ssd/anaconda3/lib/python3.6/re.py", line 301, in _compile
p = sre_compile.compile(pattern, flags)
File "/home/emc/ssd/anaconda3/lib/python3.6/sre_compile.py", line 566, in compile
code = _code(p, flags)
File "/home/emc/ssd/anaconda3/lib/python3.6/sre_compile.py", line 551, in _code
_compile(code, p.data, flags)
File "/home/emc/ssd/anaconda3/lib/python3.6/sre_compile.py", line 187, in _compile
_compile(code, av, flags)
File "/home/emc/ssd/anaconda3/lib/python3.6/sre_compile.py", line 160, in _compile
raise error("look-behind requires fixed-width pattern")
sre_constants.error: look-behind requires fixed-width pattern
【问题讨论】:
***.com/questions/26745519/… 【参考方案1】:如果您的数据不包含,
或:
,这将有效,因为我们需要一些锚来解开这个混乱:
import re
a='"1":"abc"de"fg","2":"xyz"xyz"xyz"'
b = re.sub('"((?:[^,:]|")*)"',lambda m : '""'.format(m.group(1).replace('"','')),a)
>>> b
'"1":"abcdefg","2":"xyzxyzxyz"'
正则表达式匹配引号之间的字符串,替换函数删除内引号。
我们创建了一个内部非捕获 (?:[^,:]|")
组来告诉匹配引号或除逗号和冒号之外的任何内容。
现在b
可以解析为json:
>>> import json
>>> json.loads(b)
'1': 'abcdefg', '2': 'xyzxyzxyz'
现在如果字符串包含 :
怎么办?上面的解决方案不起作用。我们必须适应它:
":"
拆分(可能有空格)
对拆分列表的所有元素应用与上述类似的正则表达式(仅删除第一个引号)
用":"
加入元素
像这样:
import re,json
# a lot of colons in keys & values
a='"1":"a:bc"de"fg","2:":"xy::z"xyz"xyz"'
b = '":"'.join(re.sub('((?:[^,:]|")*)"',lambda m : '"'.format(m.group(1).replace('"','')),x) for x in re.split('"\s*:\s*"',a))
print(json.loads(b))
正确解析json
:
'1': 'a:bcdefg', '2:': 'xy::zxyzxyz'
【讨论】:
谢谢。此外,如果值中有任何“:”怎么办? 那将丢失我的正则表达式。 如果值中有任何 ':'。应该使用什么正则表达式?以上是关于如何将字符串去掉引号的主要内容,如果未能解决你的问题,请参考以下文章