我从字符串(信用卡号和有效期)开始,例如:
'378282246310005 Invalid',
'30569309025904 Invalid',
'6011111111111117 valid'
我想获得最终字符串,该字符串的总长度为40:
'378282246310005 Invalid',
'30569309025904 Invalid',
'6011111111111117 valid'
除了Python字符串方法“ rjust”,“ ljust”和“ center”之外,是否有任何内置的字符串方法来完成此任务,或者我是否需要为此编写一些函数?
到目前为止,我已经尝试过:
string = '378282246310005 {} Invalid'
while len(string) < 40:
string = string.format(' ')
不确定如何从这里进行。
答案 0 :(得分:2)
这是使用str.split
和str.join
的手动解决方案:
L = ['378282246310005 Invalid',
'30569309025904 Invalid',
'6011111111111117 valid']
def formatter(x):
x_split = x.split()
n = sum(map(len, x_split))
return (' '*(40-n)).join(x_split)
print(*map(formatter, L), sep='\n')
378282246310005 Invalid
30569309025904 Invalid
6011111111111117 valid
即使您的输入字符串包含多个空格,此方法也有效。
答案 1 :(得分:1)
您还可以使用Python 3的字符串格式:
>>> a = '378282246310005 Invalid'
>>> L = a.split()
>>> middle = 40 - len(L[0])
>>> print(L[0] + f'{L[1]: >{middle}}')
378282246310005 Invalid
处理列表:
>>> for item in L:
... item_split = item.split()
... middle = 40 - len(item_split[0])
... print(item_split[0] + f'{item_split[1]: >{middle}}')
...
378282246310005 Invalid
30569309025904 Invalid
6011111111111117 valid
答案 2 :(得分:1)
以下方法对您也将非常有帮助。
>>> p = 353535353535
>>>
>>> credit_card_no = 378282246310005
>>> status = "Invalid"
>>>
>>> s = str(credit_card_no)
>>> l = len(s)
>>>
>>> format_string = "{:<" + str(40 - len(status)) + "}" + status
>>>
>>> answer = format_string.format(s)
>>> answer
'378282246310005 Invalid'
>>>
>>> len(answer)
40
>>>
最后,基于上述方法,我们可以编写如下所示的可重用函数。
def get_formatted_string(credit_card_no, status, width=40):
s = str(credit_card_no)
l = len(s)
format_string = "{:<" + str(width - len(status)) + "}" + status
answer = format_string.format(s)
return answer
if __name__ == "__main__":
inp1 = (378282246310005, 'Invalid')
inp2 = (30569309025904, 'Invalid')
inp3 = (6011111111111117, 'valid')
print(get_formatted_string(*inp1))
print(get_formatted_string(*inp2))
print(get_formatted_string(*inp3))
# E:\Users\Rishikesh\Projects\Python3\try>python Stk_format_str.py
# 378282246310005 Invalid
# 30569309025904 Invalid
# 6011111111111117 valid
参考书目»