如何在python-fi中转换货币

2024-09-30 10:41:32 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我这里有一个文件;我要做的是把货币从美元换成欧元;它在右边,不像左边的美元符号 所以我读了这个文件,用欧元写了一个新的文件。很抱歉,如果很乱的话。我让它运行了一次,但我关闭了pythonshell,不知道我将不得不面对另一个。问题是文件和我的代码

menu = []
myString = ''

with open("menu.txt", "r") as ins:
    array = [] 
    for line in ins:
        array.append(line)
        myArray = line.split()
        myArray[len(myArray)-2] = str(float(myArray[len(myArray)-1])*0.75)
        myArray[len(myArray)-1] = 'euros'
        menu.append(myArray)
        myString+=(" ".join(myArray))
        myString+= " " + " \n"

f = open('EuroMenu.txt','w')
f.write(myString) 

预期输出:grilled romaine, tomato jam, ricotta 9.75 euros. 以此类推;因此每一行都应显示欧元价格

电流输出

^{pr2}$

只是其中一个,我尝试了不同的方法

文件

Végétarien #it's french :)
grilled romaine, tomato jam, ricotta $13.
potato leek soup $8. 
marinated fig, pistachio, boston scarlet $14. 
grilled romaine, tomato jam, ricotta $13.
gnocchi mushroom and cherry tomato $15. 

meat
beef tartare, wasabi mayo $16. 
lamb merguez, cauliflower, cabbage $16.
boar sausage and bourbon mustard $15. 
confit rabbit, orzo $15. 
lamb berbere and lentil $13.
grilled hanger steak, frites, aioli $16.

Tags: and文件txtlenlineopenmenujam
2条回答

为了尽可能接近您的代码:

import re

f = open('EuroMenu.txt','w')

with open("menu.txt", "r") as ins:
    for line in ins:
        myArray = line.split()

        if myArray:
            m = re.search(r'\$(\d+(?:\.\d{1,2})?)\.?$', myArray[-1])
            if m:
                amount = m.groups()[0]
                myArray[-2] = str(float(amount)*0.75)
                myArray[-1] = 'euros'

        f.write(" ".join(myArray) + " \n")

f.close()

以下是正则表达式的说明:

^{pr2}$

实际上并不需要list(“array”),但如果确实需要最右边的元素,请使用myArray[-1],而不是{}。在

你最初是在一个字符串上加上,然后一次把所有的东西都写出来。每次附加到字符串都会创建一个新的字符串对象(它实际上不是“append”,尽管这可能是特定于实现的)。边走边写每一行更整洁。在

我不明白你为什么有menuarray名单。在

顺便说一下,您可以使用(python 2)获得欧元符号

euro = unichr(0x20ac)

使用正则表达式可以轻松完成此操作:

>>> le_menu = '''Végétarien #it's french :)
... potato leek soup $8.
... marinated fig, pistachio, boston scarlet $14.
... grilled romaine, tomato jam, ricotta $13.
... gnocchi mushroom and cherry tomato $15.
...
... meat
... beef tartare, wasabi mayo $16.
... lamb merguez, cauliflower, cabbage $16.
... boar sausage and bourbon mustard $15.
... confit rabbit, orzo $15.
... lamb berbere and lentil $13.
... grilled hanger steak, frites, aioli $16.'''
>>> import re
>>> print(re.sub(r'\$(\d+)', lambda x: '{} EUR'.format(x.groups()[0]), le_menu, flags=re.M))
Végétarien #it's french :)
potato leek soup 8 EUR.
marinated fig, pistachio, boston scarlet 14 EUR.
grilled romaine, tomato jam, ricotta 13 EUR.
gnocchi mushroom and cherry tomato 15 EUR.

meat
beef tartare, wasabi mayo 16 EUR.
lamb merguez, cauliflower, cabbage 16 EUR.
boar sausage and bourbon mustard 15 EUR.
confit rabbit, orzo 15 EUR.
lamb berbere and lentil 13 EUR.
grilled hanger steak, frites, aioli 16 EUR.

相关问题 更多 >

    热门问题