在python中替换string中的单个双引号

时间:2014-11-30 17:03:51

标签: python string replace double-quotes

给定字符串是:

str1=
     "sentence1 and  
           sentence2",
     "sentence3 and 
           sentence4",
     "sentence5 and
           sentence6"

期望的输出是:

sentence1 and  
         sentence2;
sentence3 and 
         sentence4;
sentence5 and
         sentence6;
  

我现在正在使用的编辑的pythod代码:

       if (replace_string.find('",')!=-1):
                 replace_string=replace_string.replace('",', ';');
                 replace_string=replace_string.replace('"','');
  

它给我如下数据,找到工作正常并替换",用;也工作正常但现在我想要   摆脱单双引号,如下所示   看起来像replace_string = replace_string.replace('"'''');不是删除那些单双   每个句子开头的引号

"句子1和
             SENTENCE2;     "句子3和              sentence4;     "句子5和              sentence6"

3 个答案:

答案 0 :(得分:0)

如果字符串是以段落格式分配的。然后建议使用三重引号。像这样。

str1 = """
"sentence1 and  
      sentence2",
"sentence3 and 
      sentence4",
"sentence5 and
      sentence6"
"""

然后使用

str1 = str1.replace(r'",', r";") # this replaces ", with ;
str1 = str1.replace(r'"', '') # this replaces " with nothing.
print str1

关于其他查询:

str1.find("",")!=-1 doesnt work to find ",

它不起作用,因为它将两个参数传递给find函数,一个是空字符串,另一个只打开双引号而没有结束双引号。

在这种情况下,你可以使用r'";'或使用像这样的转义字符" \";"

答案 1 :(得分:0)

替换方法不会在同一个字符串中进行替换,字符串是不可变的,因此它会创建一个新字符串 - 它不会被分配给变量,而是会丢失。转换也是多余的 - 你已经有了一个字符串。 刚

for idx, line in enumerate(my_list):
    my_list[idx] = line.replace('",', ';'.replace('"', '')

尽量不要使用Python对象的名称 - 比如 list - 作为变量名称 - 这是麻烦的招数

修改 至于“找不工作” - 你写它的方式,你应该得到一个例外。为了让事情变得有价值(错过那个),你使用Python str 对象而不是 str1 !如果您想在带引号的字符串中使用双引号,可以:

  • 使用反斜杠将其转义

    str1.find( “\”,“)!= - 1

  • 只需使用单引号作为字符串

    str1.find(” '')!= - 1

答案 2 :(得分:0)

这个怎么样?

str1 = str1.replace('",', ';')

您错过了作业。