在bash中使用call参数“翻译”字符串?使用以下python脚本

2024-10-03 02:37:23 发布

您现在位置: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 works中运行了它。 但问题的下一部分是我应该从bash终端翻译已经翻译的字符串,例如“viskspraket”,而不复制和粘贴翻译的字符串

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

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

因为总共有五个函数(现在文件中只显示了两个),所以使用如下方法:

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

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

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


Tags: 函数字符串textinbashaddparserif