DDD-DK 发表于 2022-8-27 16:42:11

求助字符转数字方法(新手,可能描述不准确)

请问怎么将32°45′45.62456″转换为32°45′46″

柿子饼同学 发表于 2022-8-27 17:30:04

在这里蹲下
我本来想用正则匹配数字和小数, 然后转换的 , 但是不会搞 , 也不知道可不可行
蹲一个解法qwq

临时号 发表于 2022-8-27 17:51:05

import re

num = "32°45′45.62456″"
numList = re.findall("+",num)
d = numList
m = numList
s = numList

if int(s.split('.')) >= 5:
    s = str(int(s.split('.')) + 1)
else:
    s = str(int(s.split('.')))

num = d+"°"+m+"′"+s+"″"
print(num)

柿子饼同学 发表于 2022-8-27 18:00:27

临时号 发表于 2022-8-27 17:51


为什么我这样就不行呢
import re

pos = input("请输入位置: ")

poslist = re.findall(r'+', pos)

for sub in poslist:
    sub = int(float(sub) + 0.5)

print(poslist, '°', poslist, '′', poslist, '″', sep = '')

tommyyu 发表于 2022-8-27 18:03:28

def ceil(x):
    if type(x) != type(1) and type(x) != type(0.1):
      raise TypeError
    if int(x) == x:
      return int(x)
    return int(x)+1
temp = input("请输入:")
first= temp[:temp.find('°')]
second = temp
third= temp
print(str(ceil(float(first)))+'°'+str(ceil(float(second)))+'′'+str(ceil(float(third)))+'″')

jackz007 发表于 2022-8-27 18:05:27

s = '32°45′45.62456'
a , b = s . split('°')
d = + b . split('′')
t = str(round(eval(d))) + '°' + str(round(eval(d))) + '′' + str(round(eval(d)))
print(t)

临时号 发表于 2022-8-27 18:09:38

柿子饼同学 发表于 2022-8-27 18:00
为什么我这样就不行呢

import re

pos = input("请输入位置: ")

poslist = re.findall(r'+', pos)
result = []

for sub in poslist:
    result.append(int(float(sub) + 0.5))

print(result, '°', result, '′', result, '″', sep = '')

cflying 发表于 2022-8-27 18:23:45

import re

num = '32°45′45.62456″'
print(re.sub(re.findall('′(.*)″',num),str(round(float(re.findall('′(.*)″',num)))),num))

ba21 发表于 2022-8-27 21:07:12

我硬是没明白你想描述什么。但是还是有哪么多人看懂了。
32°45′45.62456″ 转为 数字 32°45′46″
这怎么也不可能转成那样的数字吧。前面是字符串,后面明显还是字符串

ll.pc 发表于 2022-8-27 23:18:00

ba21 发表于 2022-8-27 21:07
我硬是没明白你想描述什么。但是还是有哪么多人看懂了。
32°45′45.62456″ 转为 数字 32°45′46″
这 ...

嗯,是啊,最后还是转换成字符串

DDD-DK 发表于 2022-8-28 19:50:22

a = '32°45′45.62456″'
if (int(float(a))) > 10:
       new_a = a + str(int(float(a)+0.5)) + "″"
else:
    new_a = a + str(int(float(a)+0.5)).zfill(2) + "″"
print(new_a)

DDD-DK 发表于 2022-8-28 19:59:50

临时号 发表于 2022-8-27 18:09


能不能把32°45′05.62456″ 改成32°45′06″

cflying 发表于 2022-8-28 22:07:32

DDD-DK 发表于 2022-8-28 19:59
能不能把32°45′05.62456″ 改成32°45′06″

import re

num = '32°45′05.62456″'
print(re.sub(re.findall('′(.*)″',num),str(round(float(re.findall('′(.*)″',num)))).zfill(2),num))
页: [1]
查看完整版本: 求助字符转数字方法(新手,可能描述不准确)