标题可能有点含糊,所以我会在这里详细说明。
我有一个这样定义的对象列表:
pname {
'amondo': 'amondo',
'android13': 'android13',
'android13s': 'android13s',
'android14': 'android14',
总共 351 个对象。
我想做的是用从 1 开始的数字替换左侧引号中的文本。因此最终结果将类似于:
'1': 'amondo',
'2': 'android13',
'3': 'android13s',
'4': 'android14',
一直到最后一个对象。
我用以下代码创建了一个 python 脚本:
import re
f = open('name.js', 'r')
inp = []
outp = []
for i in f:
inp.append(i)
for i in inp:
x = 1
while x < 352:
r = re.sub('.*\:', "'" + str(x) + "':", i)
x+=1
outp.append(r)
o = open('done.js', 'w')
for i in outp:
o.write(i)
f.close()
o.close()
但是输出是:
'351': 'amondo',
'351': 'android13',
'351': 'android13s',
'351': 'android14',
我明白我做错了什么以及为什么输出是这样,但我不确定如何解决它。
可能有一个我不知道的功能可以帮助我。
请您参考如下方法:
如果你仔细观察你的 while 循环,直到 x=352 之前没有什么能阻止它,然后你追加 r,这不是你想要的......一个简单的计算行数的方法是使用枚举:
for x,i in enumerate(f):
r = re.sub('.*\:', "'" + str(x) + "':", i)
outp.append(r)
