Read tuples from text file

前端 未结 3 855
失恋的感觉
失恋的感觉 2021-01-14 12:39

I need to read tuples from a txt. I tried with numpy (using genfromtxt) but it didn\'t work (or at least, I don\'t know how). This is is my txt:

(0,0) (0,0)         


        
相关标签:
3条回答
  • 2021-01-14 12:55

    Here's a simple way without using any libraries:

    tuples = []
    for t in open('input.txt').read().split():
        a, b = t.strip('()').split(',')
        tuples.append((int(a), int(b)))
    

    List comprehension equivalent:

    [tuple(int(i) for i in t.strip('()').split(',')) for t in open('input.txt').read().split()]
    


    With input.txt being the data provided in the question, this is the output:

    [(0, 0), (0, 0), (1, 0), (2, 3), (1, 0), (1, 1), (1, 1), (3, 3), (2, 0), (1, 2), (2, 1), (4, 4), (3, 0), (2, 2), (3, 1), (5, 5)]
    
    0 讨论(0)
  • 2021-01-14 13:05

    You can try regular expression too here:

    import re
    pattern='\((\d+,\d)\)'
    with open('demo.txt','r') as f:
        for line in f:
            data=re.findall(pattern,line)
            data_1=[]
            for item in data:
                data_1.append(tuple(map(lambda x:int(x),item.split(','))))
            if data_1:
                print(data_1)
    

    output:

    [(0, 0), (0, 0), (1, 0), (2, 3)]
    [(1, 0), (1, 1), (1, 1), (3, 3)]
    [(2, 0), (1, 2), (2, 1), (4, 4)]
    [(3, 0), (2, 2), (3, 1), (5, 5)]
    

    Or even better:

    import re
    pattern='\((\d+,\d)\)'
    with open('demo.txt','r') as f:
        for line in f:
            data=re.findall(pattern,line)
            data_1=[tuple(map(lambda x:int(x),item.split(','))) for item in data]
            if data_1:
                print(data_1)
    
    0 讨论(0)
  • 2021-01-14 13:07

    You can try this one, although it does not use the numpy library:

    from ast import literal_eval as createTuple
    
    tupleList = []
    
    with open("test.txt","r") as infile:
        for line in infile:
            line = line.split()
            for l in line:
                tupleList.append(createTuple(l))
    
    print(tupleList)
    

    Format of input file:

    (0,0) (0,0) (1,0) (2,3)
    (1,0) (1,1) (1,1) (3,3)
    (2,0) (1,2) (2,1) (4,4)
    (3,0) (2,2) (3,1) (5,5)
    

    Output (list of tuples):

    [(0, 0), (0, 0), (1, 0), (2, 3), (1, 0), (1, 1), (1, 1), (3, 3), (2, 0), (1, 2), (2, 1), (4, 4), (3, 0), (2, 2), (3, 1), (5, 5)]
    
    0 讨论(0)
提交回复
热议问题