鱼C论坛

 找回密码
 立即注册
查看: 2218|回复: 12

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

[复制链接]
发表于 2022-8-27 16:42:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问怎么将32°45′45.62456″转换为32°45′46″
最佳答案
2022-8-27 18:09:38
柿子饼同学 发表于 2022-8-27 18:00
为什么我这样就不行呢
import re

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

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

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

print(result[0], '°', result[1], '′', result[2], '″', sep = '')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-27 17:30:04 | 显示全部楼层
在这里蹲下
我本来想用正则匹配数字和小数, 然后转换的 , 但是不会搞 , 也不知道可不可行
蹲一个解法qwq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-27 17:51:05 | 显示全部楼层
import re

num = "32°45′45.62456″"
numList = re.findall("[0-9.]+",num)
d = numList[0]
m = numList[1]
s = numList[2]

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

num = d+"°"+m+"′"+s+"″"
print(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-27 18:00:27 | 显示全部楼层

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

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

poslist = re.findall(r'[0-9.]+', pos)

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

print(poslist[0], '°', poslist[1], '′', poslist[2], '″', sep = '')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[temp.find('°')+1:temp.find('′')]
third  = temp[temp.find('′')+1:temp.find('″')]
print(str(ceil(float(first)))+'°'+str(ceil(float(second)))+'′'+str(ceil(float(third)))+'″')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-27 18:05:27 | 显示全部楼层
s = '32°45′45.62456'
a , b = s . split('°')
d = [a] + b . split('′')
t = str(round(eval(d[0]))) + '°' + str(round(eval(d[1]))) + '′' + str(round(eval(d[2])))
print(t)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-27 18:09:38 | 显示全部楼层    本楼为最佳答案   
柿子饼同学 发表于 2022-8-27 18:00
为什么我这样就不行呢
import re

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

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

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

print(result[0], '°', result[1], '′', result[2], '″', sep = '')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-27 18:23:45 | 显示全部楼层
import re

num = '32°45′45.62456″'
print(re.sub(re.findall('′(.*)″',num)[0],str(round(float(re.findall('′(.*)″',num)[0]))),num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2022-8-27 21:07:12 | 显示全部楼层
我硬是没明白你想描述什么。但是还是有哪么多人看懂了。
32°45′45.62456″ 转为 数字 32°45′46″
这怎么也不可能转成那样的数字吧。前面是字符串,后面明显还是字符串

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 这好像是角度的测量单位,没错

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-27 23:18:00 From FishC Mobile | 显示全部楼层
ba21 发表于 2022-8-27 21:07
我硬是没明白你想描述什么。但是还是有哪么多人看懂了。
32°45′45.62456″ 转为 数字 32°45′46″
这 ...

嗯,是啊,最后还是转换成字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-28 19:50:22 | 显示全部楼层
a = '32°45′45.62456″'
if (int(float(a[6:10]))) > 10:
       new_a = a[0:6] + str(int(float(a[6:10])+0.5)) + "″"
else:
    new_a = a[0:6] + str(int(float(a[6:10])+0.5)).zfill(2) + "″"
print(new_a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-28 19:59:50 | 显示全部楼层

能不能把32°45′05.62456″ 改成32°45′06″
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)[0],str(round(float(re.findall('′(.*)″',num)[0]))).zfill(2),num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 14:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表