从 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_eval
和 int
的方法。
例如:
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]
, ...
我正在阅读一个名为 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_eval
和 int
的方法。
例如:
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]
, ...