Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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_Django_Django Models_Python 3.6_Postgresql 9.4 - Fatal编程技术网

如何在Python中增加数字字符串

如何在Python中增加数字字符串,python,django,django-models,python-3.6,postgresql-9.4,Python,Django,Django Models,Python 3.6,Postgresql 9.4,在过去的两天里,我一直在试图弄清楚如何在Python中增加数字字符串。我试图在创建记录时增加序列号。我昨天花了一整天的时间试图把它作为一个整数来处理,它工作得很好,但我永远无法让数据库存储前导零。我在StackOverflow中对此主题进行了广泛的研究,虽然有几个例子说明了如何将其作为一个整数并存储前导零,但没有一个对我有用。许多例子都是2014年的,因此可能方法有所改变。然后我切换到一个字符串,并将属性更改为CharField,可以让函数使用前导零,但现在我似乎无法让它递增。同样,我在SO上发

在过去的两天里,我一直在试图弄清楚如何在Python中增加数字字符串。我试图在创建记录时增加序列号。我昨天花了一整天的时间试图把它作为一个整数来处理,它工作得很好,但我永远无法让数据库存储前导零。我在StackOverflow中对此主题进行了广泛的研究,虽然有几个例子说明了如何将其作为一个整数并存储前导零,但没有一个对我有用。许多例子都是2014年的,因此可能方法有所改变。然后我切换到一个字符串,并将属性更改为CharField,可以让函数使用前导零,但现在我似乎无法让它递增。同样,我在SO上发现的例子是2014年的,所以情况可能有点变化。这是一个有效的函数,但每次我调用它时,它都不会递增。它只返回00000001。我肯定这是一件简单的事,我没有做,但我没有想法。提前感谢你的帮助。这是一个可以工作但不能递增的函数

def getNextSeqNo(self):
    x = str(int(self.request_number) + 1)
    self.request_number = str(x).zfill(8)
    return self.request_number
以下是定义的字段:

request_number = models.CharField(editable=True,null=True,max_length=254,default="00000")
我添加了默认值“00000”,因为如果不存在,系统会给我以下错误:

int() argument must be a string, a bytes-like object or a number, not 'NoneType'

我意识到我的代码基本上是将默认值增加1,这就是为什么我总是将00000001作为序列号。似乎不知道如何获取当前数字,然后再递增1。感谢您的帮助

这能做到吗?对但不要这样做

将其设为整数。


如果您将其作为主键,那么递增是微不足道的-自动的。对于搜索,您可以将字符串转换为整数并搜索整数-这样您就不必担心实际包含了多少前导零,因为它们都将被忽略。否则,如果您使用6位数字,而用户记不住并输入了6位0+数字,然后没有找到匹配项,则会出现问题。

可以这样做吗?对但不要这样做

将其设为整数。


如果您将其作为主键,那么递增是微不足道的-自动的。对于搜索,您可以将字符串转换为整数并搜索整数-这样您就不必担心实际包含了多少前导零,因为它们都将被忽略。否则,如果您使用6位数字,而用户无法记住并输入6 0+数字,然后没有匹配,则会出现问题。

一次以前,我做了类似的事情

您必须将字符串转换为int,然后必须获得其长度,然后必须计算所需的零数

code = "00000" 
code = str(int(code) + 1 )
code_length = len(code)

if code_length < 5: # number five is the max length of your code
  code = "0" * (5 - code_length) + code

print(code)
code=“00000”
代码=str(整数(代码)+1)
代码长度=长度(代码)
如果代码长度<5:#数字5是代码的最大长度
code=“0”*(5-代码长度)+代码
打印(代码)

一次以前,我做了类似的事情

您必须将字符串转换为int,然后必须获得其长度,然后必须计算所需的零数

code = "00000" 
code = str(int(code) + 1 )
code_length = len(code)

if code_length < 5: # number five is the max length of your code
  code = "0" * (5 - code_length) + code

print(code)
code=“00000”
代码=str(整数(代码)+1)
代码长度=长度(代码)
如果代码长度<5:#数字5是代码的最大长度
code=“0”*(5-代码长度)+代码
打印(代码)
它接受任何数字,加上1,将其串联/连接到由几个零组成的字符串(在您的情况下至少是7个),然后切片以返回最后8个字符。
比测量长度和计算出要加多少个零更简单、更优雅

它接受任何数字,加上1,将其串联/连接到由几个零组成的字符串(在您的情况下至少是7个),然后切片以返回最后8个字符。

对于那些只想增加字符串中最后一个数字的人来说,这比测量长度和计算要加多少个零更简单、更优雅。

进口稀土

a1='name 1'
num0_m=re.search(r'\d+',str(a1))
如果num0m:

rx=r'(?适用于那些只想增加字符串中最后一个数字的人

进口稀土

a1='name 1'
num0_m=re.search(r'\d+',str(a1))
如果num0m:

rx=r'(?没有数字字符串。如果是字符串,它就不是数字;它是一个字符序列,其中一些或全部碰巧是数字字符。数字没有前导零;没有01或001这样的十进制数。你不需要对字符串进行数学运算。如果需要进行数学运算,请将其转换为实际数字,然后进行计算ion,然后将其转换回字符串,并在空白处保留零个字符,直到获得所需的长度。离题,但它究竟是一个
字符场
?为什么不是一个
整数
?您确定设置了
self.request\u number
吗?如果它给您默认值,则可能不是。谢谢您的反馈。我正在努力保持记录编号,如00001、00002、00003。我可以通过在表示层添加0来很好地显示数字,但我希望人们也能够使用00003查询记录编号。如果有更好的方法,我愿意接受建议。用户能够搜索
request\u number=0001
不只是
request_number=1
?没有数字字符串。如果它是字符串,它就不是数字;它是一系列字符,其中一些或全部碰巧是数字字符。数字没有前导零;没有01或001这样的十进制数。你不需要对字符串进行数学运算。如果你需要进行数学运算,请继续将它转换为一个实际的数字,进行计算,然后将其转换回一个字符串,并用零字符填充,直到得到所需的长度。离题,但它究竟是一个
字符域
?为什么不是一个
整数
?您确定设置了
self.request\u number
?如果它给您默认值,则可能不是谢谢你的反馈。我正在努力保持一个记录,比如0000
a1 = 'name 1'
num0_m = re.search(r'\d+', str(a1))
if num0_m:
    rx = r'(?<!\d){}(?!\d)'.format(num0_m.group())
    print(re.sub(rx, lambda x: str(int(x.group()) + 1), a1))