s = "Kadu (b, a), Dadu, Adu (y, i)"
我需要将此字符串排序如下:
Adu (i, y), Dadu, Kadu (a, b)
需要更多时间的人的额外说明:作为翻译,我有时不得不翻译按字母顺序排序,以逗号分隔的列表,其中某些项目的括号中有子列表,也按字母顺序排序。翻译后,字母顺序会发生变化,因此我必须使用Word之类的原始工具来重新处理一切。我正在尝试为自己编写一些代码,可以帮助我实现自动化。我对编码非常陌生,我基本上只能使用在这里找到但正在学习的东西来做补丁。
由于我在Python中使用了一些Regex代码,因此我能够以正确的方式拆分字符串,对其进行排序,然后重新加入列表。 截至目前,我已经能够做到这一点:
Adu (y, i), Dadu, Kadu (b, a)
如您所见,主列表排序良好,但括号内的内容保持不变。
import re
s = "Kadu (b, a), Dadu, Adu (y, i)"
unsorted = re.split(r',\s*(?![^()]*\))', s)
unsorted.sort()
result = ", "
result = result.join(unsorted)
print(result)
现在我想我需要编写一些仅处理括号中内容的Regex代码。我找不到适合我的代码。有人知道我应该怎么做吗?
答案 0 :(得分:2)
您可以将re.sub
与回调函数一起使用,以找到(...)
中的部分并将其替换为自身的排序版本。
>>> ', '.join(sorted(re.sub("(?<=\().+(?=\))", lambda m: ', '.join(sorted(m .group().split(', '))), x) for x in re.split(r',\s*(?![^()]*\))', s)))
'Adu (i, y), Dadu, Kadu (a, b)'