python - 在列表元素的中间追加/添加字符串
问题描述
假设我有一个清单:
mylist = [element1, element2, element3, ...... ,elementn]
元素如下:
element1 = 'object1 = "value1" object2 = "value2" object3 = "value3"'
和所有其他元素都是相同的,除了细微的差别"value3"
将列表中的每个元素替换为 element1 之类的元素,您将获得列表的外观。
我有一个字符串:
to_place = 'something_to_append'
我想要的是在末尾附加to_place
,object1 = "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中是不可变的。所以你永远不能改变一个字符串——你只能复制它,用那个副本做一些事情,然后从中创建一个新的字符串。在您的情况下,您可以定义一个函数来为您执行此操作:
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
这两种方法都可以工作并返回您想要的东西,因此您更喜欢哪种方法取决于您:) 尽管第一种方法是针对任何类似问题的更通用的方法。
推荐阅读
- python - Python 从像 Beeceptor 这样的 Lora 服务器获取 POST 请求
- html - 使用 Instafeed.js 显示非方形 Instagram 图像的正确方法是什么?
- google-schemas - 电子邮件架构标记
- rest - 转储错误请求
- java - Injecting mock before Spring's post-construct phase
- excel - 为什么 Excel 对待 '#N/A 和 #N/A 的方式不同?
- redirect - NGINX - Skip redirect to https with proxypass to upstream
- python - A module that has the same name as a module in standard library and also need to import the same module
- javascript - 只有内容 div 可滚动的侧边栏布局
- python - 使用 xarray 和 matplotlib 绘制年和图