Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将填充字符指定为字符串并按块分割?_Python_String_Python 3.x - Fatal编程技术网

Python 如何将填充字符指定为字符串并按块分割?

Python 如何将填充字符指定为字符串并按块分割?,python,string,python-3.x,Python,String,Python 3.x,我试图将一个整数字符串按每n个字符拆分,然后将其转换为unicode。不幸的是,我遇到了一个问题。。。由于前导0已从字符串中删除,因此我对如何处理它们感到困惑。 以下是一个例子: print(num2txt(97097114103104)) 在这里,前导97是ASCII表中的一个有效数字,我可以简单地在字符串之前添加一个“0”,这样整个字符串将正确地拆分为如下内容: ['097', '097', '114', '103', '104'] 但是,如果前三位数字在ASCII表中实际有效怎么办?

我试图将一个整数字符串按每n个字符拆分,然后将其转换为unicode。不幸的是,我遇到了一个问题。。。由于前导0已从字符串中删除,因此我对如何处理它们感到困惑。 以下是一个例子:

print(num2txt(97097114103104))
在这里,前导97是ASCII表中的一个有效数字,我可以简单地在字符串之前添加一个“0”,这样整个字符串将正确地拆分为如下内容:

['097', '097', '114', '103', '104']
但是,如果前三位数字在ASCII表中实际有效怎么办? 像这样:

100097114103
在这种情况下,我希望它被分成

['100', '097', '114']
但是如果我的函数中发生了一些事情,如何确保它不再需要“0”

我目前的代码如下:

def num2txt(num, k=3):

    line = str(num) 
    line = "0" + line
    line = [line[i:i+k] for i in range(0, len(line), k)]

    return line

必要时只需添加前导零

def num2txt(num, k=3):

    line = str(num)
    padding = len(line)%k
    if padding:
        line = '0'*(k-padding) + line
    line = [line[i:i+k] for i in range(0, len(line), k)]

    return line
我会使用将字符串的长度四舍五入到
3
的倍数,然后是我的字符串。从那里到

演示:


若要确定是否需要预加0,可以检查len(str(line))的结果%3是的,我在想为什么填充中有两个“0”。但是谢谢你的及时回复。我终于明白了!一个简单的问题。。。如果我遇到这样的东西:print(num2txt(650066600660065,k=4)),它将无法正确地分割它们。我希望它们是0065,0066,0065这样的东西。但是代码给了我['0650'、'0660'、'0660'、'065']……有什么想法吗?很抱歉打扰你。我得到了它。我建议您可能需要编辑填充以切换“00”和“0”的位置,当k=4时,这两个位置将正确输出。谢谢大家!@哈利伦-我的道歉;我已经在一般情况下修复了它(请参见编辑)。谢谢!我试着做一些类似的事情。
import math
def num2txt(num, k):
    num_str = "{:0>{width}}".format(num, width=math.ceil(len(str(num))/k)*k)
    for n in range(0, len(num_str), k):
        yield num_str[n:n+k]
>>> list(num2txt(97097114103104, 3))
['097', '097', '114', '103', '104']