首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python中的字符串中删除.0

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

Stack Overflow用户
提问于 2019-11-19 13:07:06
回答 2查看 200关注 0票数 1

我正在读一个名为MissingItems.txt的文件,文件的内容是条形码,如下所示

代码语言:javascript
复制
[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]

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

代码语言:javascript
复制
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”。我试过使用替换,但我不知道如何让它识别出它们在条形码的末尾。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-19 13:10:15

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

Ex:

代码语言:javascript
复制
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]
票数 0
EN

Stack Overflow用户

发布于 2019-11-19 13:15:07

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

代码语言:javascript
复制
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创建单独的变量是错误的做法,在这种情况下,您应该使用一个列表,并使用plate[0]plate[1]、.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58934851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档