Search code examples
python-3.xreplacedecimal-point

Remove .0 from a string in python


I'm reading a file called MissingItems.txt, the contents of which is a lsit of bar codes and looks like this

[3000000.0, 5000000.0, 6000000.0, 7000000.0, 8000000.0, 1234567.0, 1234568.0, 9876543.0, 3000001.0, 5000001.0, 6000001.0, 7000001.0, 8000001.0, 1234561.0, 1234561.0, 9876541.0, 6000002.0, 7000002.0, 8000002.0, 1234562.0, 1234562.0, 9876542.0,9876543.0,9876544.0]

I have replaced the square brackets and then split the line as below

OpenFile = open(r"G:MissingItems.txt","r")


for line in OpenFile:
    remove = line.replace('[','')
    remove1 = remove.replace(']','')
    plates = remove1.split(",")
    Plate1 = plates[0]
    Plate2 = plates[1]
    Plate3 = plates[2]
    Plate4 = plates[3]
    Plate5 = plates[4]
    Plate6 = plates[5]
    Plate7 = plates[6]
    Plate8 = plates[7]
    Plate9 = plates[8]
    Plate10 = plates[9]
    Plate11 = plates[10]
    Plate12 = plates[11]
    Plate13 = plates[12]
    Plate14 = plates[13]
    Plate15 = plates[14]
    Plate16 = plates[15]
    Plate17 = plates[16]
    Plate18 = plates[17]
    Plate19 = plates[18]
    Plate20 = plates[19]
    Plate21 = plates[20]
    Plate22 = plates[21]
    Plate23 = plates[22]
    Plate24 = plates[23]

Is there a way to remove the .0 from the bar codes, preferable before splitting? So I would get '3000000', rather than '3000000.0'. I've tried to use replace, but I'm not sure how to get it to recognize they are at the end of the bar codes.


Solution

  • This is one approach using ast.literal_eval and int.

    Ex:

    import ast
    with open(r"G:MissingItems.txt","r") as infile:
        for line in infile:
            plates = [int(i) for i in ast.literal_eval(line.strip())]
            print(plates)
            # --> [3000000, 5000000, 6000000, 7000000, 8000000, 1234567, 1234568, 9876543, 3000001, 5000001, 6000001, 7000001, 8000001, 1234561, 1234561, 9876541, 6000002, 7000002, 8000002, 1234562, 1234562, 9876542, 9876543, 9876544]