用列表的第 n 个字符串替换第 n 个子字符串

我有一个这样的字符串:

"initWithType:bundleIdentifier:uniqueIdentifier:"

和两个这样的列表:

['long long', 'id', 'id']
['arg1', 'arg2', 'arg3']

并希望以字符串结尾:

"initWithType:(long long)arg1 bundleIdentifier:(id)arg2 uniqueIdentifier:(id)arg3"

如您所见,我实际上需要将每个第 n 个分号替换为每个列表中的第 n 个字符串(加上一些带有括号和空格的格式)。

我一直在尝试使用.format*拆包运算符,但收效甚微。


扬帆大鱼
浏览 66回答 1
1回答

海绵宝宝撒

您可以结合使用字符串格式zip:s1 = "initWithType:bundleIdentifier:uniqueIdentifier:"l2 = ['long long', 'id', 'id']l3 = ['arg1', 'arg2', 'arg3']print(" ".join("{}:({}){}".format(a, b, c) for a, b, c in zip(s1.split(":"), l2, l3)))编辑:您还可以按照@flakes 的建议将 f 字符串与 Python >= 3.6 一起使用:print(" ".join(f"{a}:({b}){c}" for a, b, c in zip(s1.split(":"), l2, l3)))这将打印initWithType:(long long)arg1 bundleIdentifier:(id)arg2 uniqueIdentifier:(id)arg3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python