将整数列表转换为字符串并保留每个数字

3

我有一个整数列表的列表,看起来像这样:

paystring[:3]
[[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
 [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

我需要将这些转换为一个整数。
100000002212
225543333322
000000000000

我尝试了这个:

x = []
for row in paystring:
    x.append(int("".join(map(str, row))))

但是对于 x[:3],我得到的结果是

[100000002212, 225543333322, 0]

有什么办法可以解决这个问题吗?

1
0和000000000000是相同的整数,如果您想保留前导零,请将其保留为字符串。 - Dani Mesejo
5个回答

2
您需要直接修改代码,具体如下所示:

x = []
for row in paystring:
    x.append(str("".join(map(str, row))))

将类型转换为str而不是int

否则它将无法保留0s


谢谢,不过我有一个问题,当我执行以下代码时:se = pd.Series(x) df['Paystring'] = se.values,在Excel文件中第三行仍然会出现1个零。你知道如何解决这个问题吗? - user9366862
如果您执行类似于df['Paystring'] = se.values;df['Paystring'].to_csv('test.csv');的操作,它确实会保留所有数字。问题可能出现在导入Excel时。 - Pedro Borges

0

一种使用列表推导式的方法

lst = [[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
        [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

[''.join(map(str,l)) for l in lst]
#['100000002212', '225543333322', '000000000000']

0
你可以像下面这样在Python中使用format函数:
print('{0:012d}'.format(0))

输出:

000000000000

0

我认为这将解决零被加在一起的问题。

paystring=[[1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2],
          [2, 2, 5, 5, 4, 3, 3, 3, 3, 3, 2, 2],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

strings = []
for el in paystring:
    string = ""
    for number in el:
        string+= str(number)
    strings.append(string)
print(strings)

它将打印出以下内容: ['100000002212','225543333322','000000000000']

-1

严格来说,没有像000000000这样的数字,我们将其写为0

如果您真的想要前导0,请不要使用int()将字符串转换为整数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接