lzawww 发表于 2019-12-19 19:24

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}

无聊发发疯 发表于 2019-12-19 20:02

小白一样在学习中
我用 Pycharm 按你这个敲了一遍路径修后 也执行不下去   不懂

建议 安装PYcharm   看下执行效果

lzawww 发表于 2019-12-19 20:06

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



你要把teatdata.txt和你在写的Python代码文件放在同一目录下,或者用绝对路径;然后以字符串形式赋给path

lzawww 发表于 2019-12-19 20:07

我22点把文件传上来,现在在自习室

muyan1995 发表于 2019-12-19 20:15

我大概模拟了下楼主想实现的内容

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)

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='speed of light',即string='speed of light',
然后楼主在对 'speed of light'float() 的时候try 失败了,就到了 下面except 里去,
name=name + string + ' '你这里自己加了一个空格,name 一开始是空的,然后被赋值后就是你结果里的 ‘speed of light ’ 了。我这样理解应该没错吧。:lol

lzawww 发表于 2019-12-19 21:23

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里的空格去掉

无聊发发疯 发表于 2019-12-19 21:35

坐地吃瓜坐看大神解疑
页: [1] 2
查看完整版本: Python中rstrip无效求助