我来自C/C++世界,是一个Python,我编写了这个简单的string函数,它接受一个输入字符串(保证是ASCII)并返回最后四个字符。如果少于四个字符,我想用字母“A”来填补领导位置。(这不是一项练习,而是另一项复杂职能的宝贵部分)
有几十种方法,从蛮力,到简单,再到优雅。我下面的方法,虽然很实用,但看起来并不是"Pythonic“。
注意:我目前正在使用Python2.6,性能不是问题。输入字符串很短(2-8个字符),我只调用了几千次这个函数。
def copyFourTrailingChars(src_str):
four_char_array = bytearray("AAAA")
xfrPos = 4
for x in src_str[::-1]:
xfrPos -= 1
four_char_array[xfrPos] = x
if xfrPos == 0:
break
return str(four_char_array)
input_str = "7654321"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))
input_str = "21"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))产出如下:
The output of 7654321 is 4321
The output of 21 is AA21皮索纳人的建议?
发布于 2015-09-16 06:08:49
我将使用简单的切片,然后使用str.rjust()来正确地使用A作为fillchar对结果进行验证。例子-
def copy_four(s):
return s[-4:].rjust(4,'A')演示-
>>> copy_four('21')
'AA21'
>>> copy_four('1233423')
'3423'发布于 2015-09-16 06:30:32
您可以简单地在原始字符串之前添加四个前哨'A‘字符,然后取结束的四个字符:
def copy_four(s):
return ('AAAA'+s)[-4:]够简单的了!
发布于 2015-09-16 06:06:32
带字符串格式的东西怎么样?
def copy_four(s):
return '{}{}{}{}'.format(*('A'*(4-len(s[-4:])) + s[-4:]))结果:
>>> copy_four('abcde')
'bcde'
>>> copy_four('abc')
'Aabc'这里有一个更好、更规范的选项:
def copy_four(s):
return '{:A>4}'.format(s[-4:])结果:
>>> copy_four('abcde')
'bcde'
>>> copy_four('abc')
'Aabc'https://stackoverflow.com/questions/32600848
复制相似问题