在 Python 中添加一个字符串

Posted

技术标签:

【中文标题】在 Python 中添加一个字符串【英文标题】:Prepend a string in Python 【发布时间】:2017-06-28 01:45:39 【问题描述】:

如果列表中的每个数字不是必需的位数,我会尝试在其前面添加零。

    lst = ['1234','2345']
    for x in lst:
        while len(x) < 5:
            x = '0' + x
    print(lst)

理想情况下,这将打印 ['012345', '02345']

【问题讨论】:

一个更好的例子是lst = ['1234', '23456']。我们如何print(lst) 和得到['01234', '23456'] 最终它是成功的答案组合。 `lst = ['1234','2345'] newlst = [] for i in lst: i = i.zfill(5) newlst.append(i) print(newlst)' 【参考方案1】:

你可以使用zfill:

在左边用零位填充数字字符串 s 直到给定 达到宽度

lst = ['1234','2345']
[s.zfill(5) for s in lst]
# ['01234', '02345']

或者使用format 方法与填充和对齐

[":0>5".format(s) for s in lst]
# ['01234', '02345']

【讨论】:

这确实是个好主意,非常适合这种情况......我喜欢它,再加上一个【参考方案2】:

您的代码无法完成这项工作,因为 python 中的字符串是不可变的,请参阅此了解更多信息Why doesn't calling a Python string method do anything unless you assign its output?

在这种情况下你可以这样列举:

lst = ['1234','2345', "23456"]
for i, l in enumerate(lst):
  if len(l) < 5:
    lst[i] = '0' + l
print(lst)

['01234', '02345', '23456']

【讨论】:

嗨达米安,感谢您的回复。不幸的是,这似乎没有考虑到列表项足够长的情况。我很抱歉举了一个糟糕的例子。 对不起@ Damian,我应该举一个更好的例子。假设 lst = ['1234', '23456'] 我试图得到 ['01234', '23456'] 。第二个数字不受影响,因为它足够长。 @Coby aaaah 现在我明白了,我会更新答案并告诉我:) @Coby 我认为这就是您正在查看的内容,我这样做是为了尽量不修改您的代码。我希望它有所帮助,如果有帮助,请不要忘记投票和接受:)【参考方案3】:

你可以使用这样的列表推导:

>>> ['0' * (5-len(x)) + x for x in lst]
['01234', '02345']

或者list + map 试试:

>>> list(map(lambda x: '0' * (5-len(x)) + x, lst))
['01234', '02345']

【讨论】:

有点扭曲,但我喜欢它,它可以完成工作:)【参考方案4】:

最终,这是完成工作的答案的组合。

lst = ['1234','2345']
newlst = []

for i in lst:
    i = i.zfill(5)
    newlst.append(i)

print(newlst)

如果我的例子不清楚,我深表歉意。感谢所有提供答案的人!

【讨论】:

干得好,有利于找出解决方案,我认为是一个加分项:)【参考方案5】:

你可以这样做:

>>> lst = ['1234','2345']
>>> lst = ['0' * (5 - len(i)) + i for i in lst]
>>> print(lst)
['01234', '02345']

【讨论】:

以上是关于在 Python 中添加一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

(Python) 在字符串中添加负数

python里的end是啥意思

如何将字符串列添加到python中的另一个字符串?

将子字符串列表添加到python中字符串的特定位置

Python:如何将字符串“ub”添加到字符串中的每个发音元音?

python在文档字符串中自动添加类型提示