Python 有没有办法修改字符串以删除小数点?
我有一个有很多图像的文件。每个图像的名称如下:Python 有没有办法修改字符串以删除小数点?,python,python-3.x,Python,Python 3.x,我有一个有很多图像的文件。每个图像的名称如下: 100304.jpg 100305.jpg 100306.jpg 等等 我还有一个电子表格,每个图像都是一行,行中的第一个值是名称,名称后的值是各种小数和0来描述每个图像的特征 问题是,当我从工作表中提取名称时,有东西添加了一个小数,这导致文件无法通过shutil.move()传输 我遇到的问题发生在shutil.move(imageLocBase+“/”+名称,folderPath)上 出于某种原因,我的代码从电子表格中获取名称(例如:100
- 100304.jpg
- 100305.jpg
- 100306.jpg
- 等等
splitOn = '.'
nameOfFile = text.split(splitOn, 1)[0]
应该有用
如果我们使用您的文件名eg 12345.0并创建一个var
name = "12345.0"
现在我们需要拆分这个变量。在这种情况下,我们希望在
所以我们将这个条件保存为第二个var
splitOn = '.'
为python使用.split。
这里我们提供了文本(变量名)和pythonsplit命令。
所以,让它成为文字
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
我希望这有帮助
或
如下面突出显示的,将“转换为浮点”转换为“在中”
如果保存为float
name 12345.0
newName = round(int(name))
这将使浮点值四舍五入(因为其0将向下四舍五入)
或
如果将float另存为字符串
print(int(float(name)))
显然,您从电子表格中检索到的值被解析为浮点数,因此当您将其转换为字符串时,它保留小数部分。
您可以从字符串值中修剪“.0”,或在转换为字符串之前将其转换为整数 您还可以检查电子表格的单元格格式,并确保其设置为正常(idk设置,但不是数字)。修复后,您的数据可能不再与.0一起提供。使用
pandas
读取Excel文件。
正如在对原始问题的评论中所建议的,下面是一个如何使用pandas
读取Excel文件的快速示例,以及一个数据结构示例
如果有任何问题,请随意大声说出来,或者查看一下
数据结构
这完全是人为的,因为我没有你的实际文件的例子
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文件中。< /强>熊猫也可以从其中之一读取!p> 如果始终在变量末尾添加“.0”,则需要以以下方式读取变量字符串“name”:
shutil.move(imageLocBase + "/" + name[:-2], folderPath)
字符串就像一个列表,我们可以选择要读取的元素。
切片是用这种方法收集的
对不起我的英语。再见所有这些人都花了时间回复,出于礼貌,请给回复打分。欢迎来到StackOverflow。看见在您发布MRE代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。字符串是不可变的,但您可以删除以下字符:
name\u cleaned=name.replace(“.”,”)
。您也可以在小数点上拆分:name\u cleaned=name.split(str=“.”[0]
。作为旁白-使用pandas.read\u excel()
函数可能会有所帮助。这将把你的Excel数据存储在<代码>数据文件中,这可能有助于你的数据输入问题,并且更容易迭代。@ S3DEV,我认为这实际上是正确的举动,考虑添加一个答案。谢谢,我一定要看看熊猫。请扩展此答案以包括上下文,以帮助我们的新用户。此外,最好在源代码处解决数据类型问题,而不是稍后在代码中修补一个有趣的字符串。只是一个想法。@EnigmaticFractal:看看我下面关于存储为CSV文件而不是Excel文件的回答——正是出于这个原因。
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
shutil.move(imageLocBase + "/" + name[:-2], folderPath)