从 python 中的字符串中删除 .0

Remove .0 from a string in python

我正在阅读一个名为 MissingItems.txt 的文件,其中的内容是一堆条形码,看起来像这样

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

我已经替换了方括号,然后如下拆分行

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]

有没有办法从条形码中删除 .0,最好是在拆分之前?所以我会得到“3000000”,而不是“3000000.0”。我试过使用替换,但我不确定如何让它识别它们在条形码的末尾。

这是一种使用 ast.literal_evalint 的方法。

例如:

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]

您的文件似乎有 JSON 格式的行,因此您可以使用 JSON 解析器:

import json
with open(r"G:MissingItems.txt","r") as openfile:
    for line in openfile:
        plate = json.loads(line)
        print(plate)

这使得 plate 成为一个数字列表(不是字符串),因此 3000.0 和 3000 之间的差异消失了(因为它们表示相同的数字)。只有当您需要以十进制表示形式输出它们时,您才会担心要输出的小数位数。

其次,为 plate1 plate2 创建单独的变量是不好的做法,...在这种情况下,您应该使用列表,并使用 [=14= 访问值], plate[1], ...