Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法修改字符串以删除小数点?_Python_Python 3.x - Fatal编程技术网

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
  • 等等
我还有一个电子表格,每个图像都是一行,行中的第一个值是名称,名称后的值是各种小数和0来描述每个图像的特征

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

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

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)