Python中rstrip无效求助
本帖最后由 lzawww 于 2019-12-20 11:06 编辑19行这个strip为什么无效?#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 = 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}
小白一样在学习中
我用 Pycharm 按你这个敲了一遍路径修后 也执行不下去 不懂
建议 安装PYcharm 看下执行效果 无聊发发疯 发表于 2019-12-19 20:02
小白一样在学习中
我用 Pycharm 按你这个敲了一遍路径修后 也执行不下去 不懂
你要把teatdata.txt和你在写的Python代码文件放在同一目录下,或者用绝对路径;然后以字符串形式赋给path 我22点把文件传上来,现在在自习室 我大概模拟了下楼主想实现的内容
1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是一个空格,并不是这样的,你的读取文本中两个字符串之间这么长都只算一个空格
2.楼主一开始读取的ifile 并没有赋值到一个变量,因此下面ifile 的遍历 并不会成功
# 这是文本内容
fdsaa 1 DFSFE1qwrdewrfaz 1 rfdewfgggq
235451 54556316788765124564
# 这是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.rstrip()
print(_dict) muyan1995 发表于 2019-12-19 20:15
我大概模拟了下楼主想实现的内容
1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是 ...
只遍历了一遍,而且遍历的这一遍是成功的...... muyan1995 发表于 2019-12-19 20:15
我大概模拟了下楼主想实现的内容
1.楼主一开始是split() 会以空格进行分割,楼主可能认为一个空格键就是 ...
你可能还没理解我的意思,我的执行结果在最上面,我的问题就是为什么name.rstrip()没有把'speed of light '等的最后一个空格去掉 lzawww 发表于 2019-12-19 20:45
你可能还没理解我的意思,我的执行结果在最上面,我的问题就是为什么name.rstrip()没有把'speed of light ...
正如我上面所说的,第一行split后的list='speed of light',即string='speed of light',
然后楼主在对 'speed of light'float() 的时候try 失败了,就到了 下面except 里去,
name=name + string + ' '你这里自己加了一个空格,name 一开始是空的,然后被赋值后就是你结果里的 ‘speed of light ’ 了。我这样理解应该没错吧。:lol muyan1995 发表于 2019-12-19 21:04
正如我上面所说的,第一行split后的list='speed of light',即string='speed of light',
然后楼主在对 ...
你理解对了,然后try:float(string)成功后,name最后面会多一个空格,我在try:float(string)后面有一行name.rstrip(),可是没有把name里的空格去掉 坐地吃瓜坐看大神解疑
页:
[1]
2