Python 结合姓名和号码节省固定金额

Python 结合姓名和号码节省固定金额,python,python-2.7,Python,Python 2.7,我被一个小代码困扰着。我通过添加一列并更改分隔符来读取CSV文件 这一切都很完美 但是,对于我想给出名字的专栏,我遇到了一个问题 当我添加列时,我想填写名称:l_\u000000,我想继续给它编号,但在6位以内。像这样: 一些例子(当然,但对于这个例子,跳过一些)。 百万美元 l__uu000001 l_全景_000010 l_全景_009523 -- 现在它是这样的: 百万美元 百万分之二 百万美元 百万美元 l_u000000125 l_0000002568 等 如何修复它以保持在6位数 f

我被一个小代码困扰着。我通过添加一列并更改分隔符来读取CSV文件

这一切都很完美

但是,对于我想给出名字的专栏,我遇到了一个问题

当我添加列时,我想填写名称:l_\u000000,我想继续给它编号,但在6位以内。像这样:

一些例子(当然,但对于这个例子,跳过一些)。 百万美元 l__uu000001 l_全景_000010 l_全景_009523

--

现在它是这样的: 百万美元 百万分之二 百万美元 百万美元 l_u000000125 l_0000002568 等

如何修复它以保持在6位数

for incsv in folder_in.iterdir():
    outcsv = folder_out.joinpath('0new'+incsv.name)

    with open(str(incsv), 'rb') as input, open(str(outcsv), 'wb') as output:
        reader = csv.reader(input, delimiter = ',')
        writer = csv.writer(output, delimiter = ';')

        all = []
        row = next(reader)
        row.insert(0, 'L_panoramic')
        all.append(row)
        for k, row in enumerate(reader):
            all.append(['l_panoramic_000000'+str(k+0)] + row)
        writer.writerows(all)
使用代码:

  for k, row in enumerate(reader):
        all.append(['l_panoramic_'+str.format(k+'06')] + row)
        writer.writerows(all)
它给了我:

 File "C:/code/convert/ConvertImageTrigger.py", line 20, in <module>
    all.append(['l_panoramic_'+str.format(k+'06')] + row)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
文件“C:/code/convert/ConvertImageTrigger.py”,第20行,在
all.append(['l__'+str.format(k+'06')]+行)
TypeError:不支持+:“int”和“str”的操作数类型

您正在尝试对字符串执行加法数学运算:

all.append(['l_panoramic_%s' % str(1000000 + k).replace('1', '', 1) + row)
您可以使用内置功能,例如:

'l_panoramic_' + format(k, '06')
将用
0
s填充
k
,最大宽度为
6

或者,您可以将
str.format()
与类似的格式字符串一起使用:

'l_panoramic_{:06}'.format(k)

嗨,Raunak,你的代码是用2GB来构建CSV文件的,谁是原始的500KB左右?请参见上面的正确用法,它不是
str.format()
(这是第二种形式),也不是
+
,而是
。嗨,好的:抱歉修复了它。但它现在正在生成2+GB的文件。所以从500KB到2+GB。这是为什么?没有足够的信息来帮助你,没有理由用这个字符串替换你的当前字符串来产生大小的差异。当我打开一个文件时,它会写入000000-000006之间的每一行,而不是添加头。然后从000000-000006I开始,从一个2307行的文件开始,结果是2662277行。