首页 > 解决方案 > 有没有办法修改字符串以删除小数?

问题描述

我有一个包含很多图像的文件。每个图像的名称如下:

我还有一个电子表格,每张图片是一行,行中的第一个值是名称,名称后面的值是各种小数和0来描述每张图像的特征。

问题是,当我从工作表中提取名称时,会添加一个小数,这会导致文件无法通过 shutil.move()

import xlrd
import shutil

dataLocation = "C:/Users/User/Documents/Python/Project/sort_solutions_rev1.xlsx"
imageLocBase = "C:/Users/User/Documents/Python/Project/unsorted"
print("Specify which folder to put images in. Type the number only.")
print("1")
print("2")
print("3")
int(typeOfSet) = input("")

#Sorting for folder 1
if int(typeOfSet) == 1:
#Identifying what to move
        name = str(sheet.cell(int(nameRow), 0).value)
        sortDataStorage = (sheet.cell(int(nameRow), 8).value) #float
        sortDataStorageNoFloat = str(sortDataStorage) #non-float
        print("Proccessing: " + name)
        print(name + " has a correlation of " + (sortDataStorageNoFloat))

#sorting for this folder utilizes the information in column 8)
        if sortDataStorage >= sortAc:
                print("test success")
                folderPath = "C:/Users/User/Documents/Python/Project/Image Folder/Folder1"
                shutil.move(imageLocBase + "/" + name, folderPath)
                print(name + " has been sorted.")
        else:
                print(name + " does not meet correlation requirement. Moving to next image.")

我遇到的问题是 shutil.move(imageLocBase + "/" +name, folderPath) 出于某种原因,我的代码从电子表格中获取名称(例如:100304),然后添加一个“.0”所以当尝试要移动文件,它试图移动 100304.0(不存在)而不是 100304。

标签: pythonpython-3.x

解决方案


用于pandas读取您的 Excel 文件。

正如对原始问题的评论中所建议的,这里是一个如何使用pandas读取 Excel 文件的快速示例,以及一个数据结构示例。

有任何问题,请随时喊叫,或查看文档

import pandas as pd

# My path looks a little different as I'm on Linux.
path = '~/Desktop/so/MyImages.xlsx'

df = pd.read_excel(path)

数据结构

这完全是人为的,因为我没有您的实际文件的示例。

    IMAGE_NAME  FEATURE_1   FEATURE_2   FEATURE_3
0   100304.jpg  0.0111      0.111       1.111
1   100305.jpg  0.0222      0.222       2.222
2   100306.jpg  0.0333      0.333       3.333

希望这有助于您入门。

建议:

当您遇到小数(数据类型)问题时,Excel 喜欢认为它很聪明并且会做“意想不到的”事情。 也许考虑将您的图像数据存储在数据库 (SQLite) 中或作为普通的旧 CSV 文件。 熊猫也可以从其中任何一个中读取!:-)


推荐阅读