首页 > 解决方案 > 在列表元素的中间追加/添加字符串

问题描述

假设我有一个清单:

mylist = [element1, element2, element3, ...... ,elementn]

元素如下:

element1 = 'object1 = "value1" object2 = "value2" object3 = "value3"'

和所有其他元素都是相同的,除了细微的差别"value3"

将列表中的每个元素替换为 element1 之类的元素,您将获得列表的外观。

我有一个字符串:

to_place = 'something_to_append'

我想要的是在末尾附加to_placeobject1 = "value1"这样它看起来像object1 = "value1something_to_append"

我尝试遍历每个元素,尝试查找value1(与列表的元素相同),并使用字符串追加函数,但我只是没有得到我想要的结果。

任何帮助将不胜感激。(我会在几分钟内上传我试过的代码,有点麻烦)

编辑:添加代码:

element = [element1, element2, element3]
s = 'something_to_append'
for u in element:
    if 'object1="value"' in u.split():
        u = u + s
print(element)

至于输出,我得到的列表和以前一样。PS:在 Windows 10 上的 PyCharm 上使用 Python 2.7

标签: python

解决方案


首先,字符串在python中是不可变的。所以你永远不能改变一个字符串——你只能复制它,用那个副本做一些事情,然后从中创建一个新的字符串。在您的情况下,您可以定义一个函数来为您执行此操作:

def insert_something(element, value, appendix):
    index_after = element.find(value) + len(value)
    return element[:index_after] + appendix + element[index_after:]

之后,遍历您的列表,对每个元素执行此操作,并创建一个新列表(我确信有比这更优雅的方法,但这就是我想出的 rn):

new_list = [insert_something(item, '"value1', to_place) for item in mylist]

编辑: 为了更接近您自己的代码:您要做的是使用enumerate,因为您要更改列表,这将影响元素的位置。可能看起来像这样:

element = [element1, element2, element3]
s = 'something_to_append'
for idx, u in enumerate(element):
    if 'object1="value"' in u.split():
        u = u[:-1] + s + '"'
        element[idx] = u

这两种方法都可以工作并返回您想要的东西,因此您更喜欢哪种方法取决于您:) 尽管第一种方法是针对任何类似问题的更通用的方法。


推荐阅读