吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2579|回复: 12
收起左侧

[已解决] Python中rstrip无效求助

[复制链接]
lzawww 发表于 2019-12-19 19:24
本帖最后由 lzawww 于 2019-12-20 11:06 编辑


19行这个strip为什么无效
[Asm] 纯文本查看 复制代码
#coding=utf-8

# 请在此处填写代码
#********** Begin **********#
path = 'testdata.txt'
ifile = open(path, 'r')
ifile.readline()
ifile.readline()

global constants
constants = {}
for line in ifile:
    alist = list(line.split())
    name = ''
    for string in alist:
        try:
            float(string)
            value = eval(string)
            name.rstrip()
            constants[name] = value
            break
        except:
            name = name + string + ' '
print(constants)
ifile.close()




testdata.txt内容
name of constant           value              dimension
------------------------------------------------------------
speed of light             299792458.0        m/s
gravitational constant     6.67259e-11        m**3/kg/s**2
Planck constant            6.6260755e-34      J*s
elementary charge          1.60217733e-19     C
Avogadro number            6.0221367e23       1/mol
Boltzmann constant         1.380658e-23       J/K
electron mass              9.1093897e-31      kg
proton mass                1.6726231e-27      kg


执行结果

{'speed of light ': 299792458.0, 'gravitational constant ': 6.67259e-11, 'Planck constant ': 6.6260755e-34, 'elementary charge ': 1.60217733e-19, 'Avogadro number ': 6.0221367e+23, 'Boltzmann constant ': 1.380658e-23, 'electron mass ': 9.1093897e-31, 'proton mass ': 1.6726231e-27}
IMG_20191219_201658.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无聊发发疯 发表于 2019-12-19 20:02
小白一样在学习中
我用 Pycharm 按你这个敲了一遍  路径修后 也执行不下去   不懂

建议 安装PYcharm   看下  执行效果  

PYcharm

PYcharm

免费评分

参与人数 1热心值 +1 收起 理由
lzawww + 1 用心讨论,共获提升!

查看全部评分

 楼主| lzawww 发表于 2019-12-19 20:06
无聊发发疯 发表于 2019-12-19 20:02
小白一样在学习中
我用 Pycharm 按你这个敲了一遍  路径修后 也执行不下去   不懂

你要把teatdata.txt和你在写的Python代码文件放在同一目录下,或者用绝对路径;然后以字符串形式赋给path
 楼主| lzawww 发表于 2019-12-19 20:07
muyan1995 发表于 2019-12-19 20:15
我大概模拟了下楼主想实现的内容
]O@5D}ABR}PZ}PI}`1[7A.png
1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是一个空格,并不是这样的,你的读取文本中两个字符串之间这么长都只算一个空格
2.楼主一开始读取的ifile 并没有赋值到一个变量,因此下面ifile 的遍历 并不会成功


# 这是文本内容
fdsaa   1   DFSFE  1  qwrdewrfaz    1    rfdewfgggq
23545  1   545563  1  6788765  1  24564
[Python] 纯文本查看 复制代码
# 这是demo
_dict = {}
with open('test1.txt', 'r', encoding='utf-8') as fb:
    rows = fb.readlines()
for row in rows:
    tips = row.split('1')
    print(tips)
    for tip in tips:
        _dict[tip] = tip.rstrip()
print(_dict)
RYQU1M{R66{WQ{YFK~])8GN.png

免费评分

参与人数 1吾爱币 +1 收起 理由
lzawww + 1 用心讨论,共获提升!

查看全部评分

 楼主| lzawww 发表于 2019-12-19 20:20
muyan1995 发表于 2019-12-19 20:15
我大概模拟了下楼主想实现的内容

1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是 ...

只遍历了一遍,而且遍历的这一遍是成功的......
 楼主| lzawww 发表于 2019-12-19 20:45
muyan1995 发表于 2019-12-19 20:15
我大概模拟了下楼主想实现的内容

1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是 ...

你可能还没理解我的意思,我的执行结果在最上面,我的问题就是为什么name.rstrip()没有把'speed of light '等的最后一个空格去掉
muyan1995 发表于 2019-12-19 21:04
lzawww 发表于 2019-12-19 20:45
你可能还没理解我的意思,我的执行结果在最上面,我的问题就是为什么name.rstrip()没有把'speed of light ...

正如我上面所说的,第一行split后的list[0]='speed of light',即string='speed of light',
然后楼主在对 'speed of light'  float() 的时候try 失败了,就到了 下面except 里去,
name=name + string + ' '  你这里自己加了一个空格,name 一开始是空的,然后被赋值后就是你结果里的 ‘speed of light ’ 了。我这样理解应该没错吧。
 楼主| lzawww 发表于 2019-12-19 21:23
muyan1995 发表于 2019-12-19 21:04
正如我上面所说的,第一行split后的list[0]='speed of light',即string='speed of light',
然后楼主在对 ...

你理解对了,然后try:float(string)成功后,name最后面会多一个空格,我在try:float(string)后面有一行name.rstrip(),可是没有把name里的空格去掉
无聊发发疯 发表于 2019-12-19 21:35
坐地吃瓜  坐看大神解疑
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 22:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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