我有一个包含很多行的文件,每行都包含由逗号 ,
分隔的数字。
某些行包含 float 字
,即:['9.3']
我一直在尝试从列表中删除这些号码大约 1 小时~但没有成功。每当它尝试在 float 上使用 int 时,都会出错。我不知道如何从行中删除这些 float 数字
数字:https://pastebin.com/7vveTxjW
这是我到目前为止所做的:
with open('planets.txt','r') as f:
lst = []
temp = []
for line in f:
l = line.strip()
l = l.split(',')
for x in l:
if x == '':
l[l.index(x)] = 0
elif x == '\n' or x == '0':
print "removed value", l[l.index(x)]
del l[l.index(x)]
try:
temp.append([int(y) for y in l])
except ValueError:
pass
最佳答案
首先,修改正在迭代的列表是一个坏主意。更好的想法可能是从可以转换为 int
的元素构造一个新列表。
def is_int(element):
try:
int(element)
except ValueError:
return False
return True
with open('planets.txt','r') as f:
lst = []
temp = []
for line in f:
l = line.strip().split(',')
temp.append([int(y) for y in l if is_int(y)])
如果你想包含float
值的积分部分,你可以这样做:
def is_float(element):
try:
float(element)
except ValueError:
return False
return True
with open('planets.txt','r') as f:
lst = []
temp = []
for line in f:
l = line.strip().split(',')
temp.append([int(float(y)) for y in l if is_float(y)])
关于Python-删除 float 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43542392/