如何使用Python在字符串中的每个]之后添加逗号?

时间:2017-01-28 14:23:44

标签: javascript python

我有一系列我想要使用的数组,但它们的JavaScript格式不正确。我正在尝试使用Python来编辑它们,因为这是我熟悉的,并且它的工作效果不是很好。我的数组看起来像这样:

text = """[["a", "b", "c"]["d, "e", "f"]]"""

text = list(text)

counter = 0
for letter in text:
  if letter == "]":
    text.insert(counter, ",")
  counter += 1

print (''.join(text))

我试图让它得到一个文本中所有字符的列表,然后我的for循环遍历并在所有']之后添加一个逗号。 join语句应该将列表重新放回字符串中。

当我取出for循环时,我的代码工作正常,但是当我添加它时它根本不起作用。我看不出我做错了什么,有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您不能更改列表,而是在迭代。要解决您的问题,请使用replace

text = text.replace('][', '], [')

答案 1 :(得分:1)

您可以使用re.sub

import re

text = re.sub(r']', r'],', text)

答案 2 :(得分:0)

循环增加了插入位置,因此它在前一次迭代后移动的文本块中插入逗号,而不是将累积的偏移量记入帐户。要修复它,您可以从右向左迭代,或者,也可以在当前位置添加一些先前插入的逗号。但使用replace

要简单得多
 `text.replace("]","],")`

我认为你真的不需要使用逗号和逗号,所以这个组合可以完成所有工作:

result = text.replace("]","],").replace(",]","]")[0:-1]

或者,我们可以使用regexps:

import re
brcommare = re.compile(r'(\]+)(?=[^]])')
result = re.sub(brcommare,r'\1,',text)