我有一系列我想要使用的数组,但它们的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循环时,我的代码工作正常,但是当我添加它时它根本不起作用。我看不出我做错了什么,有什么想法吗?
答案 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)