如何将不同的替换规则组应用于字符串列表?

时间:2017-10-23 04:48:53

标签: python python-3.x

我正在尝试编写一个applyRules(char, rules)的函数 它应该

  • 单个角色。
  • 一组规则作为列表。

规则列表的格式应该是一组字符串,格式如下:

character1:substitution,character2:substitution等。

我想遍历规则列表,并将字符串解析为符号和替换(可能使用split()函数)?

这是我到目前为止所做的:

def applyRules(char, rules):
    newstr = ""
    for x in char:
        newstr += s[0].replace('#') + s[1].replace('*')
    return newstr

我理解这种格式吗?

3 个答案:

答案 0 :(得分:1)

这是一种使用字典来保存替换规则的相当简单的方法:

rules = {
    '#': 'No. ',
    '*': 'one or more',
    # etc
}

def applyRules(text, rules):
    for rule in rules:
        text = text.replace(rule, rules[rule])
    return text

test = """
  #1 - Never tell a lie.
  #2 - There can be * of them.
"""

print(applyRules(test, rules))

输出:

  No. 1 - Never tell a lie.
  No. 2 - There can be one or more of them.

答案 1 :(得分:0)

根据我的理解,我认为这就是你想要的:

def applyRules(char, rules):
    for rule_list in (rule.split(':') for rule in rules):
        char = char.replace(rule_list[0], rule_list[1])
    return char

例如:print(applyRules('b', ['b:c', 'c:p']))输出'p'

答案 2 :(得分:0)

我可能错了,但似乎你的代码和描述不同。如果char是单个字符,那么你将如何迭代它?这是你正在寻找的吗?

def apply_rules(char, rules_list):
    for old, new in map(lambda x: x.split(':'), rules_list):
        char = char.replace(old, new)
    return char