来自C/C++世界并且是Python newb,我编写了这个简单的字符串函数,该函数接受输入字符串(保证为ASCII)并返回最后四个字符。如果少于四个字符,我想用字母“A”填充开头的位置。 (这不是练习,而是另一个复杂功能的重要组成部分)
从蛮力到简单到优雅,有数十种方法可以做到这一点。我下面的方法虽然有效,但似乎不是“Pythonic”的。
注意:我目前正在使用python 2.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
来自Pythoneers的建议?
最佳答案
我将使用简单切片,然后使用 str.rjust()
将A
用作fillchar
来对结果进行正确对齐。例子 -
def copy_four(s):
return s[-4:].rjust(4,'A')
演示-
>>> copy_four('21')
'AA21'
>>> copy_four('1233423')
'3423'