使用Python 3...
我编写了对ArcGIS符号系统标注值进行舍入的代码。标注以字符串形式给出,如“0.3324 - 0.6631”。我的可重复代码是...
label = "0.3324 - 0.6631"
label_list = []
label_split = label.split(" - ")
for num in label_split:
num = round(float(num), 2) # rounded to 2 decimals
num = str(num)
label_list.append(num)
label = label_list[0]+" - "+label_list[1]
这段代码可以工作,但是有没有人有什么建议/更好的方法来舍入字符串中的数字?
3条答案
按热度按时间hgtggwj01#
此解决方案不尝试对序列进行操作,而是对2个值进行操作。
对我来说更有可读性。
pcww981p2#
您可以使用正则表达式来搜寻超过两个小数位数的数字,并将其四舍五入。
正则表达式
\b\d+\.\d+\b
将查找字符串中所有被单词边界包围的带小数点的数字。它被单词边界包围是为了防止它拾取附加在单词上的数字,例如ABC0.1234
。正则表达式(Try online)的解释:
re.sub
函数允许您指定一个函数,该函数将match
对象作为输入,并返回所需的替换值。让我们定义这样一个函数,该函数将数字解析为float
,然后使用f-string syntax将其格式化为两位小数(您可以按自己喜欢的方式格式化它,我喜欢这种方式)要使用此函数,只需将此函数指定为
re.sub
的repl
参数这样得到
label_rep
为:这样做的好处是,您不需要硬编码任何分隔符或拆分字符。字符串中的所有数字都会被找到并格式化。请注意,如果需要,这样会在数字中添加额外的零。
bwleehnv3#
一种稍微不同的方法: