从 Python 中的 int 或 string 中删除小数位
Removing decimal place from int or string in Python
我有一个包含类似 0.0.1 的字符串的文本文件,我想删除小数点以使其成为 001 或 1。例如 1.0.1 将变成 101。
我想过使用 round() 但它会将 0.0.1 变成 0 而这不是我想要的。
您可以使用 join
和理解:
>>> s = '0.0.1'
>>> ''.join(c for c in s if c != '.')
'001'
如果要去除前导 0:
>>> str(int(''.join(c for c in s if c != '.')))
'1'
您可以删除“.”数字之间:
s = '0.0.1'
s = s.replace('.', '')
之后你可以把它变成一个整数:
int(s)
通过将其设为整数,您还将删除所有前导零。如果您之后需要一个字符串,只需将其转换回字符串:
s = str(int(s))
使用replace()
尝试像这样的代码块:
new_file = open('newfile.txt','w')
line_file = open('myfile.txt','r').readlines()
for line_in in line_file:
line_out = line_in.replace('.','')
new_file.write(line_out)
应该读取您的文件,删除所有句点,然后将结果写入新文件。
如果它不适用于您的具体情况,请对此答案发表评论,我会更新代码块来满足您的需求。
p.s。根据下面的评论,您可以在一行中实现这一点:
open('newfile.txt','w').write(open('myfile.txt','r').read().replace('.',''))
所以如果你想用它。
我有一个包含类似 0.0.1 的字符串的文本文件,我想删除小数点以使其成为 001 或 1。例如 1.0.1 将变成 101。
我想过使用 round() 但它会将 0.0.1 变成 0 而这不是我想要的。
您可以使用 join
和理解:
>>> s = '0.0.1'
>>> ''.join(c for c in s if c != '.')
'001'
如果要去除前导 0:
>>> str(int(''.join(c for c in s if c != '.')))
'1'
您可以删除“.”数字之间:
s = '0.0.1'
s = s.replace('.', '')
之后你可以把它变成一个整数:
int(s)
通过将其设为整数,您还将删除所有前导零。如果您之后需要一个字符串,只需将其转换回字符串:
s = str(int(s))
使用replace()
尝试像这样的代码块:
new_file = open('newfile.txt','w')
line_file = open('myfile.txt','r').readlines()
for line_in in line_file:
line_out = line_in.replace('.','')
new_file.write(line_out)
应该读取您的文件,删除所有句点,然后将结果写入新文件。
如果它不适用于您的具体情况,请对此答案发表评论,我会更新代码块来满足您的需求。
p.s。根据下面的评论,您可以在一行中实现这一点:
open('newfile.txt','w').write(open('myfile.txt','r').read().replace('.',''))
所以如果你想用它。