Python 强制字符串数字为小数点后2位

Python 强制字符串数字为小数点后2位,python,regex,python-2.7,Python,Regex,Python 2.7,我正在尝试将数字为小数点后2位的字符串更改为 无法编辑的代码 产出: 有时输出: 打印输出示例: 正确的输出: 我如何更改它,使其强制字符串,以便如果它在250.000处出现,则数字将更改/强制为小数点后2位 有什么想法吗?使用捕获组: >>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.000') 'PSO250.00' >>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.00000') 'PSO2

我正在尝试将数字为小数点后2位的字符串更改为

无法编辑的代码 产出: 有时输出: 打印输出示例: 正确的输出: 我如何更改它,使其强制字符串,以便如果它在
250.000
处出现,则数字将更改/强制为小数点后2位

有什么想法吗?

使用捕获组:

>>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.000')
'PSO250.00'
>>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.00000')
'PSO250.00'
更新

>>> output = '''Student: PSO250.000
... StudentB: PSO323.42424242
... ClassTotal: PSO10.0
... Class: PSO1.00000000'''

>>> print re.sub('(?<=\.)\d+', lambda m: m.group()[:2].ljust(2, '0'), output)
Student: PSO250.00
StudentB: PSO323.42
ClassTotal: PSO10.00
Class: PSO1.00
>>输出=''学生:PSO250.000
... 学生乙:PSO323.4242
... 类别总数:PSO10.0
... 类别:PSO1.00000000''
>>>使用捕获组打印re.sub('(?):

>>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.000')
'PSO250.00'
>>> re.sub('(\.\d\d)\d+', r'\1', 'PSO250.00000')
'PSO250.00'
更新

>>> output = '''Student: PSO250.000
... StudentB: PSO323.42424242
... ClassTotal: PSO10.0
... Class: PSO1.00000000'''

>>> print re.sub('(?<=\.)\d+', lambda m: m.group()[:2].ljust(2, '0'), output)
Student: PSO250.00
StudentB: PSO323.42
ClassTotal: PSO10.00
Class: PSO1.00
>>输出=''学生:PSO250.000
…学生乙:PSO323.4242
…类别总计:PSO10.0
…类别:PSO1.00000000''

>>>如果字符串始终有小数点,则打印re.sub('(?):

print (mainR+'0')[:mainR.find('.')+3]

如果字符串始终有小数点:

print (mainR+'0')[:mainR.find('.')+3]

那么你的问题是如何在不更改代码的情况下更改输出?这听起来像是一个很高的要求。那么你的问题是如何在不更改代码的情况下更改输出?这听起来像是一个很高的要求。OP的呼叫终于结束了,但这并不能完成
PSO250.00000
上的工作。我需要保留学生部分(这是一个名称),基本上是最后一个“组”需要编辑成2dp,它可能首先是一个8 dp的数字。@Hyflex,我不明白你的意思。你是说你想从
Student:PSO250.000
中得到
250.00
?编辑原始帖子以获取更多细节。@beanbagging,OP还想
ClassTotal:PSO10.0
变成
ClassTotal:PSO10.00
。OP的电话最后,但这不符合PSO250.00000的要求,我需要保留学生部分(这是一个名称),基本上是最后一个“组”需要编辑成2dp,它可能首先是一个8 dp的数字。@Hyflex,我不明白你的意思。你是说你想从
Student:PSO250.000
中得到
250.00
?编辑原始帖子以获取更多细节。@beanbagging,OP还想
ClassTotal:PSO10.0
变成
ClassTotal:PSO10.00
@falsetru,错过了。更新了,但现在不太喜欢:)@falsetru,错过了。更新了,但现在不太喜欢:)
>>> output = '''Student: PSO250.000
... StudentB: PSO323.42424242
... ClassTotal: PSO10.0
... Class: PSO1.00000000'''

>>> print re.sub('(?<=\.)\d+', lambda m: m.group()[:2].ljust(2, '0'), output)
Student: PSO250.00
StudentB: PSO323.42
ClassTotal: PSO10.00
Class: PSO1.00
print (mainR+'0')[:mainR.find('.')+3]