[英]Python Subtract integers in List to return a value
我想在Python 2.7中獲取一個像這樣的大文件:
123 456 GTHGGGTH
223 567 FGRTHSYS
12933 4656832 GJWSOOOSKKSSJ
.....
我想逐行讀取文件,忽略第三個元素,並在每個行中減去第一個元素的第二個元素。 因此,上面的第1行將返回333。
到目前為止,我已經嘗試過了:
def deleteLast(list):
NewL = list.pop()
return NewL
f = open(file_name, 'r')
line = f.readline()
while line:
L = line.split()
L2 = deleteLast(L)
L3 = [int(number) for number in L2]
Length = L3[1]-L3[0]
print Length
f.close()
但是,當我嘗試這樣做時,編譯器會說:
ValueError: invalid literal for int() with base 10: 'T'
感謝所有幫助。
那是因為list.pop()
返回的是“彈出”項,所以它不再返回列表。
代替編寫此deleteLast
函數,最好使用像這樣的切片:
L2 = line.split()[0:2]
稍后您將遇到另一個問題,因為while循環根本沒有前進。 考慮改用for循環。
您可以嘗試這樣的事情:
In [8]: with open("abc") as f: #always use with statement when handling files
...: for line in f:
...: x,y=map(int,line.split()[:2])
...: print y-x
...:
333
344
4643899
嘗試以下方法:
with open(file_name, 'r') as f:
for line in f.readlines():
rowData = line.split()
left, right = map(int, rowData[:2])
length = right - left
print length
要么:
from operator import sub
with open(file_name, 'r') as f:
for line in f.readlines():
print sub(*map(int, line.split()[:2])[::-1])
f = open(file_name, 'r')
for line in f.readlines():
x, y = line.split(' ')[:2]
print int(y) - int(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.