簡體   English   中英

Python在List中減去整數以返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM