将字符串转换为列表,但如果符合某些条件则连接元素

时间:2018-04-09 10:40:00

标签: python string python-3.x list

我是Python和编码的初学者,所以我觉得我对这个问题不太了解。我正在尝试用字符串制作一个列表,但有一些修改。

假设我有一些像这样的代码:

input_text = "gʷʰsoʷngʲʷʰos"
modifiers_list = ["ʷ", "ʰ", "ʲ"]

我希望能够将输入文本转换为字符列表,但修饰符是前面字符的一部分,例如:

output_list = ['gʷʰ', 's', 'oʷ', 'n', 'gʲʷʰ', 'o', 's']

我一直试图提出一个解决方案几天,看了很多SO线程但没有成功。

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

import re

modifiers = ''.join(map(re.escape, modifiers_list))
pattern = r'\w(?:[{}])*'.format(modifiers)
output_list = re.findall(pattern, input_text)

print(output_list)  # ['gʷʰ', 's', 'oʷ', 'n', 'gʲʷʰ', 'o', 's']

构造的模式看起来像\w(?:[ʷʰʲ])*,它匹配单个字符,后跟任意数量的修饰符。