如何使这个简单的字符串函数“pythonic”

2024-10-01 00:32:20 发布

您现在位置:Python中文网/ 问答频道 /正文

来自C/C++世界,作为Python NeWB,我编写了一个简单的字符串函数,它采用一个输入字符串(保证是ASCII)并返回最后四个字符。如果少于四个字符,我想用字母“A”来填补领导职位。(这不是一个练习,而是另一个复杂功能的重要组成部分)

有几十种方法可以做到这一点,从蛮力,到简单,再到优雅。我下面的方法虽然很实用,但似乎不是“Python式的”。在

注意:我现在使用的是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)))

输出为:

^{pr2}$

Python的建议?在


Tags: the方法函数字符串srcinputoutput字符
3条回答

用字符串格式怎么样?在

def copy_four(s):
    return '{}{}{}{}'.format(*('A'*(4-len(s[-4:])) + s[-4:]))

结果:

^{pr2}$

这里有一个更好、更规范的选择:

^{3}$

结果:

^{pr2}$

我将使用简单的切片,然后使用^{}来右对齐结果,使用A作为fillchar。示例-

def copy_four(s):
    return s[-4:].rjust(4,'A')

演示-

^{pr2}$

您可以简单地在原始字符串之前添加四个前哨字母“A”,然后取结尾的四个字符:

def copy_four(s):
    return ('AAAA'+s)[-4:]

太简单了!在

相关问题 更多 >