鱼C论坛

 找回密码
 立即注册
查看: 2192|回复: 6

[已解决]新手小白求助python 关于分割解析字符串的问题

[复制链接]
发表于 2020-7-8 09:49:26 | 显示全部楼层 |阅读模式

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

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

x
题目要求是Write code using find() and string slicing  to extract the number at the end of the line below(text = "X-DSPAM-Confidence:    0.8475"). Convert the extracted value to a floating point number and print it out.

我写的code是
text = "X-DSPAM-Confidence:    0.8475";
a = data.find(" ",:)
print(a)
b = data.find(5)
print(b)
c = data[a+1:b+1]
print(c)

最后答案应该是0.8475

求问1)这代码第二行为啥有问题, 2)怎样改这段代码比较好, 谢谢🙏
最佳答案
2020-7-8 10:01:00
本帖最后由 Twilight6 于 2020-7-8 10:25 编辑

[b]

find 第一个参数填的是需要查找的字符,第二个参数是开始的位置参数,第三个是结束的位置参数,都是指查找的范围,如果没填默认是整个字符串范围,所以这里的find 用法错了

你的 data 参数应该改成 text ,因为你data 都没有定义

最后一步列表切片是包含左端不包含右端的元素,所以应该改成 [a:b+1] ,还有题目要求提取出来后i转为浮点型,那么要加上 float 转化为浮点型下
text = "X-DSPAM-Confidence:    0.8475"
a = text.find("0")
print(a)
b = text.find("5")
print(b)
c = float(text[a:b+1])
print(c)

在这里单纯提取最后的数字这样改就行:
text = "X-DSPAM-Confidence:    0.8475"
a = text.find("0")
c = float(text[a:])
print(c)
输出结果:
0.8475





[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 09:53:05 | 显示全部楼层
是这个意思吗

>>> text = "X-DSPAM-Confidence:    0.8475"
>>> print(text.split(":")[-1])
    0.8475
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 09:55:02 | 显示全部楼层
你这代码写的...
首先,字符串叫text,你用data.find???
其次,谁教你find是那么用的??
还有,find的参数必须是字符串,填个数字??
data = "X-DSPAM-Confidence:    0.8475";
a = data.find(" ")
print(a)
b = data.find('5')
print(b)
c = data[a+4:b+1]
print(c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 09:57:07 | 显示全部楼层
本帖最后由 赚小钱 于 2020-7-8 10:02 编辑

1. data 是什么玩意
2. data.find(" ")
3. find 接受字符串,5是什么鬼
4. "X-DSPAM-Confidence:    0.8475" 里面究竟有几个空格
In [9]: text = "X-DSPAM-Confidence:    0.8475";

In [10]: a = text.find(" ")

In [11]: print(a)
19

In [12]: b = text.find("5")

In [13]: print(b)
28

In [14]: c = text[a+1:b+1]

In [15]: print(c)
   0.8475

当然,如果是我写的话,会是这个样子
float(text.split(":")[1].strip())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 09:57:41 | 显示全部楼层
本帖最后由 yhhpf 于 2020-7-8 10:00 编辑
>>> text = "X-DSPAM-Confidence:    0.8475"
>>> a = text.find(".")
>>> a
24
>>> b = text[a-1:]
>>> b
'0.8475'
>>> type(b)
<class 'str'>
>>> b = float(b)
>>> type(b)
<class 'float'>
>>> print(b)
0.8475
第一,题目没让你用正则表达式,让你用find()函数和切片去将text中的浮点数值取出,并转成浮点类型打印出来;

通过find找到"."(因为好多空格呀,哈哈),然后用切片取出.左边一位到最后,取出之后用type()查看会发现是str字符串,所以通过b=float(b)转换为浮点类型,最后打印出来;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 10:01:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-8 10:25 编辑

[b]

find 第一个参数填的是需要查找的字符,第二个参数是开始的位置参数,第三个是结束的位置参数,都是指查找的范围,如果没填默认是整个字符串范围,所以这里的find 用法错了

你的 data 参数应该改成 text ,因为你data 都没有定义

最后一步列表切片是包含左端不包含右端的元素,所以应该改成 [a:b+1] ,还有题目要求提取出来后i转为浮点型,那么要加上 float 转化为浮点型下
text = "X-DSPAM-Confidence:    0.8475"
a = text.find("0")
print(a)
b = text.find("5")
print(b)
c = float(text[a:b+1])
print(c)

在这里单纯提取最后的数字这样改就行:
text = "X-DSPAM-Confidence:    0.8475"
a = text.find("0")
c = float(text[a:])
print(c)
输出结果:
0.8475





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

使用道具 举报

 楼主| 发表于 2020-7-8 10:51:30 | 显示全部楼层
感谢各位大神指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 14:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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