仅使用字符串函数而不使用正则表达式从字符串创建字符列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅使用字符串函数而不使用正则表达式从字符串创建字符列表相关的知识,希望对你有一定的参考价值。

输入:

data = "~ddd , eee~, ~aaaa~"

所需的输出:

data = ["~ddd eee~","~aaaa~"]
  1. 打印数据中以“〜”开头和结尾的字符串列表。
  2. [替换,如果〜之间有空格。

我如何在不使用python中使用正则表达式的情况下实现此目标?

答案

您可以将str.splitstr.replace一起使用:

data = "~ddd , eee~, ~aaaa~"
r = [(i+'~' if i[-1] != '~' else i).replace(', ', '') for i in data.split('~, ')]

输出:

['~ddd eee~', '~aaaa~']
另一答案

漂亮的可读代码:

def split_by_ap(word):

    i = iter(word.split('~'))

    result = []

    while True:
        space = next(i, None)
        word = next(i, None)

        if not word: break

        result.append(word.replace(',', ''))

    return result


print(split_by_ap("~ddd , eee~, ~aaaa~"))

另一答案

您可以在此正则表达式中使用re.findall来获取~之间的字符串,然后使用str.replace,替换为

data = "~ddd , eee~, ~aaaa~"

data = [r.replace(', ', '') for r in re.findall('~[^~]*~', data)]

print(data)

输出:

['~ddd eee~', '~aaaa~']

以上是关于仅使用字符串函数而不使用正则表达式从字符串创建字符列表的主要内容,如果未能解决你的问题,请参考以下文章

仅使用 python 正则表达式从最新的字符串中获取

如何使用正则表达式从字符串中删除字符串和特殊字符并仅显示不带逗号的数字?

从正则表达式仅返回部分匹配项

从正则表达式仅返回部分匹配项

仅使用正则表达式从 long strong 中检索第 12 到第 14 个字符 - Grafana 变量

如何使用正则表达式拆分字符串而不消耗拆分器部分?