来自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'

09-04 17:22
查看更多