首页 > 解决方案 > 使用调用参数在bash中“翻译”字符串?使用以下 python 脚本

问题描述

#!/usr/bin/python3

import argparse

vokaler = "aouåeiyäöAOUÅEIYÄÖ"
konsonanter = "bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ"

def viskspraket(text):
    """Removes all vowels from the sentence"""
    return "".join([x if x not in vokaler else "" for x in text])

def rovarspraket(text):
    """Consonants are doubled and "o" is put inbetween them"""
    return "".join([x + "o" + x if x in konsonanter else x for x in text])

parser = argparse.ArgumentParser()
parser.add_argument("-r", help="rovarspraket", action="store_true")
parser.add_argument("-v", help="viskspraket", action="store_true")
args = parser.parse_args()
textFromTerminal = input()

print(textFromTerminal)

if args.r:
    print(rovarspraket(textFromTerminal))

elif args.v:
    print(viskspraket(textFromTerminal))

在我的作业中,练习的一部分是使用以下命令从 bash 终端执行这个 python 脚本:

$ echo "The landlubbers are trying to sink us with their canons." |./translation.py -r

其中“-r”是我在标题中提到的调用参数。这部分问题我已经弄清楚并从 bash 运行它。但问题的下一部分是我应该从 bash 终端翻译已经翻译的字符串,例如“viskspraket”而不复制和粘贴翻译后的字符串。

我的 translate.py 文件中有更多函数,我应该能够在所有函数之间自由转换而无需复制和粘贴,但我认为两个函数应该足以说明问题。

因此,例如 -r -v 或类似的东西应该首先将字符串翻译成“rovarspra​​ket”,然后获取翻译后的字符串并使用“viskspraket”再次翻译它。

由于总共有五个函数(现在文件中只显示了两个),因此使用类似:

parser.add_argument("-rv", help="rovarspraketToviskspraket", action="store_true")

elif args.rv:
    print(viskspraket(rovarspraket(textFromTerminal))

因为所有可能的翻译都不可行,因为有太多的组合。所以我的问题是:我该怎么做呢?一般来说,我对 bash 非常缺乏经验。我也为瑞典的函数名称道歉,但我希望无论如何都清楚。

标签: pythonbash

解决方案


推荐阅读