如何将字符串去掉引号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字符串去掉引号相关的知识,希望对你有一定的参考价值。

比如将"TextBox"+i.ToString()+".Text" 转换为TextBox1.Text
(i为变量)
ASP.NET

参考技术A 首先开头要有这句:setlocal enabledelayedexpansion

不判断直接去掉所有的双引号:
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'

【讨论】:

谢谢。此外,如果值中有任何“:”怎么办? 那将丢失我的正则表达式。 如果值中有任何 ':'。应该使用什么正则表达式?

以上是关于如何将字符串去掉引号的主要内容,如果未能解决你的问题,请参考以下文章

如何去掉字符串中的 双引号

如何使用java正则去掉这个字符串的引号

vba 如何去掉返回结果两端的双引号?

vb去掉字符串中的双引号

Vba 字符串中的引号“ 怎样处理

如何从用户传入的参数中去掉引号