[英]Python list: add string before and after item
得到一個列表作為變量。 這些項目被傳輸到 HTML 格式的 email。 如果列表項以“-”開頭,則需要在其前后獲取 HTML 代碼才能獲取紅色文本。
所以基本上:如果一個列表項以'-'開頭,我需要在它之前添加一個字符串,然后在它之后添加一個。 我已經得到了這個:
mylist = ['no problem','also no problem','-this got to be red','no problem here']
before = '<p style="color:red">'
after = '</p>'
for i in mylist:
if i.startswith('-'):
i = newstr = " ".join((before,i,after))
mylist.append(i)
print(mylist)
問題:它添加了新變量,但也保留了舊變量。 我需要更換它。 有什么建議么?
我建議在這里使用列表理解。 用這個替換 for 循環:
mylist = [' '.join((before, s, after)) if s.startswith('-') else s
for s in mylist]
print(mylist)
列表理解將完全適合這種情況。 還有為什么不使用str.format
而不是str.join
:
mylist = ['no problem','also no problem','-this got to be red','no problem here']
make_red = '<p style="color:red"> {} </p>'.format
mylist = [make_red(s) if s.startswith('-') else s for s in mylist]
使用賦值運算符=
而不是append
,並枚舉列表,以便您可以使用索引對其進行操作:
for i, _ in enumerate(mylist):
if mylist[i].startswith('-'):
mylist[i] = ' '.join(before, mylist[i], after)
mylist.append(i)
會將新項目添加到您的列表中,您可以使用他們的索引來更新您的列表
for i, item in enumerate(mylist):
if item.startswith('-'):
mylist[i] = " ".join((before,item,after))
print(mylist)
before = '<p style="color:red">'
after = '</p>'
# Option 1
mylist = ['no problem','also no problem','-this got to be red','no problem here']
for i, s in enumerate(mylist):
if s.startswith('-'):
mylist[i] = " ".join((before,s,after))
print(mylist)
# Option 2
mylist = ['no problem','also no problem','-this got to be red','no problem here']
mylist = list(map(lambda s: " ".join((before,s,after)) if s.startswith('-') else s, mylist))
print(mylist)
# Option 3
mylist = ['no problem','also no problem','-this got to be red','no problem here']
mylist = [" ".join((before,s,after)) if s.startswith('-') else s for s in mylist]
print(mylist)
那是因為你正在追加。 你需要更換它。 在這里對您的代碼進行小改動:
mylist = ['no problem','also no problem','-this got to be red','no problem here']
before = '<p style="color:red">'
after = '</p>'
for i in range(len(mylist)):
if mylist[i].startswith('-'):
mylist[i] = " ".join((before,mylist[i],after))
print(mylist)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.