我正在尝试将字符串(例如'AB0001')转换为显示为'001'的整数
我在尝试:
x='AB0001'
z=int(x[2:len(x)])
虽然我的输出是:
1
我需要将它作为一个整数用于:
format_string=r'/home/me/Desktop/File/AB'+r'%05s'+r'.txt' % z
感谢您的时间,请告诉我如何获得以下结果:
format_string=r'/home/me/Desktop/File/AB0001.txt'
答案 0 :(得分:4)
你在python3和python 2中根本没有前导零,它们表示octal
个数字。如果您要将其传递给字符串,请将其保留为字符串。
如果你想填0,你可以填写:
print(x[2:].zfill(5))
当你似乎想要与原始字符串完全相同的输出时,我不明白你为何会切片。
format_string=r'/home/me/Desktop/File/{}.txt'.format(x)
会给你你想要的东西。
答案 1 :(得分:0)
如果我理解正确,您将在字符串中使用int
,对吗?既然如此,你应该完全按照自己的意思去做:
>>> x = 1
>>> format_string = r'/home/me/Desktop/File/AB%04d.txt' % x
>>> print(format_string)
/home/me/Desktop/File/AB0001.txt
>>>
您不需要将变量存储为格式为int
的{{1}}(无论如何都不能这样做)。您在创建001
时将其转换为该格式。
答案 2 :(得分:0)
通过;WITH Cte AS(
SELECT *,
RN = ROW_NUMBER() OVER(ORDER BY MyOrdinal) - MyMarker + 1
FROM @Holder
),
CteApply AS(
SELECT
t.MyOrdinal,
t.MyMarker,
MyGroupNumber =
CASE
WHEN RN IS NULL THEN x.NewRN
ELSE RN
END
FROM Cte t
OUTER APPLY(
SELECT TOP 1 RN * 1.1 AS NewRN
FROM Cte
WHERE
t.MyOrdinal > MyOrdinal
AND MyMarker IS NOT NULL
ORDER BY MyOrdinal DESC
)x
)
SELECT
MyOrdinal,
MyMarker,
MyGroupNumber = DENSE_RANK() OVER(ORDER BY MyGroupNumber)
FROM CteApply
方法使用string-formatting是有益的。
.format()
结果:
x='AB0001'
resulting_int_value =int(x[2:]) # omitting the last index of a slice operation will automatically assign the end of the string as the index
resulting_string = r'/home/me/Desktop/File/AB{:04}.txt'.format(resulting_int_value)
这里,'/home/me/Desktop/File/AB0001.txt'
是一个格式说明符,通过填充最多4个前导零来告诉字符串格式化给定值。
因此,使用{:04}
会产生字符串"{:04}".format(0)
。