首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何用有序数字替换对象的每个实例?

Python:如何用有序数字替换对象的每个实例?
EN

Stack Overflow用户
提问于 2015-10-22 04:32:34
回答 2查看 56关注 0票数 1

标题可能有点神秘,所以我将在这里详细说明。

我有一个定义如下的对象的列表:

代码语言:javascript
复制
pname {
'amondo': 'amondo',
'android13': 'android13',
'android13s': 'android13s',
'android14': 'android14',

总共351个物体。

我想要做的是用从1开始的数字替换左边引号中的文本。所以最终的结果应该是:

代码语言:javascript
复制
'1': 'amondo',
'2': 'android13',
'3': 'android13s',
'4': 'android14',

一直到最后一个物体。

我用以下代码创建了一个python脚本:

代码语言:javascript
复制
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()

但产出如下:

代码语言:javascript
复制
'351': 'amondo',
'351': 'android13',
'351': 'android13s',
'351': 'android14',

我明白我做错了什么,为什么输出就是它,但我不知道如何修复它。

可能有一种功能可以帮助我,但我不知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-22 04:41:13

如果你仔细观察你的then循环,直到x=352才停止它,然后追加r,这不是你想要的.计数行的一种简单方法是使用枚举:

代码语言:javascript
复制
for x,i in enumerate(f):
    r = re.sub('.*\:', "'" + str(x) + "':", i)
    outp.append(r)
票数 3
EN

Stack Overflow用户

发布于 2015-10-22 04:37:13

试试这个:

代码语言:javascript
复制
with open('name.js') as infile, open('done.js', 'w') as outfile:
    count = 0
    for line in infile:
        if ":" not in line:
            outfile.write(line)
            continue
        count += 1
        _, val = line.strip().split(":")
        outfile.write("'{}' : {}\n".format(count, val))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33273441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档