在 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 中添加一个字符串的主要内容,如果未能解决你的问题,请参考以下文章