亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法修改字符串以刪除小數?

有沒有辦法修改字符串以刪除小數?

千萬里不及你 2022-07-26 20:43:35
我有一個包含很多圖像的文件。每個圖像的名稱如下:100304.jpg100305.jpg100306.jpgETC...我還有一個電子表格,每張圖片是一行,行中的第一個值是名稱,名稱后面的值是各種小數和0來描述每張圖像的特征。問題是,當我從工作表中提取名稱時,會添加一個小數,這會導致文件無法通過 shutil.move()import xlrdimport shutildataLocation = "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 1if 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。
查看完整描述

4 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

用于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 文件。 熊貓也可以從其中任何一個中讀??!:-)


查看完整回答
反對 回復 2022-07-26
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

splitOn = '.'

nameOfFile = text.split(splitOn, 1)[0]

應該管用


如果我們取您的文件名,例如 12345.0 并創建一個 var


name = "12345.0"

現在我們需要拆分這個變量。在這種情況下,我們希望拆分. 所以我們將此條件保存為第二個 var


splitOn = '.'  

將 .split 用于 python。在這里,我們提供文本(變量名)和 python split 命令。所以讓它字面意思


12345.0

split at .

only make one split and save as two vars in a list 

(so we have 12345 at position 0 (1st value) 

and 0 at position 1 (2nd value) in a list)


save 1st var

(as all lists are 0 based we ask for [0] 

(if you ever get confused with list, arrays etc just start counting

from 0 instead of one on your hands and then you know 

ie position 0 1 2 3 4 = 1st value, 2nd value, 3rd value, 4th value, 5th value)


nameOfFile = name.split(splitOn, 1)[0] 

             12345.0 split ( split on . , only one split ) save position 0 ie first value

所以.....


name = 12345.0

splitOn = '.'

nameOfFile = name.split(splitOn, 1)[0]   

yield(nameOfFile)

輸出將是


12345

我希望這有助于 https://www.geeksforgeeks.org/python-string-split/


或者


如下所示,轉換為浮動到 https://www.geeksforgeeks.org/type-conversion-python/


如果保存為浮點數


name 12345.0

newName = round(int(name))

這將使浮點數四舍五入(因為它的 0 將向下舍入)


或者如果 float 保存為字符串


print(int(float(name)))


查看完整回答
反對 回復 2022-07-26
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

如果總是在變量末尾添加“.0”,則需要以這種方式讀取 var_string“name”:

shutil.move(imageLocBase + "/" + name[:-2], folderPath)

字符串就像一個列表,我們可以選擇要讀取的元素。切片就是用這種方法

對不起我的英語不好。再見


查看完整回答
反對 回復 2022-07-26
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

顯然,您從電子表格中檢索的值被解析為浮點數,因此當您將其轉換為字符串時,它會保留小數部分。
您可以從字符串值中修剪“.0”,或者在轉換為字符串之前將其轉換為整數。

您還可以檢查電子表格的單元格格式并確保其設置為正常(idk 設置,但不是數字)。修復后,您的數據可能不再隨 .0 提供。


查看完整回答
反對 回復 2022-07-26
  • 4 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號