我有以下一段代码。
result = "1/1/2010|1/2/2111"
request = "1/1/1.3.4.5.6/1/1/127.0.0.1"
replylist = result.split("|")
finalresultlist = [
f"{i.split('/')[2]}.{j.split('/')[2]}"
for i in request
for j in replylist \
if (i.split("/")[1] == j.split("/")[1])
]
print(finalresultlist)
注意:在每个和字符串在 上拆分后,当根据索引 [1] 中的值匹配时,f"{i.split('/')[2]}.{j.split('/')[2]}"
将"1.3.4.5.6"
与连接起来。"2010"
if (i.split("/")[1] == j.split("/")[1])
result
request
'|'
我想返回一个新字符串,它将 1.3.4.5.6request
与 2010连接起来result
以返回一个包含字符串的列表:["1.3.4.5.6.2010"]
在我当前的代码中,我收到错误“列表超出范围”。我无法解决这个问题。
任何帮助表示赞赏。
request
是一个字符串,迭代它 (for i in request
) 一次会给你一个字符。在我看来,你试图一次做太多事情。
如果我们查看包括堆栈跟踪在内的完整错误消息,我们会看到以下建议:
Traceback (most recent call last):
File "/home/wjandrea/test.py", line 7, in <module>
for i in request
File "/home/wjandrea/test.py", line 9, in <listcomp>
if (i.split("/")[1] == j.split("/")[1])
IndexError: list index out of range
重新排列代码点i.split("/")[1]
是问题所在。
for i in request
完全删除,并替换request
为i
.
finalresultlist = [
f"{request.split('/')[2]}.{j.split('/')[2]}"
for j in replylist
if request.split("/")[1] == j.split("/")[1]
]
输出:['1.3.4.5.6.2010']
然后还有一些我们可以做的其他改进,比如更好的变量名称和从列表理解中移除内容。
replies = [i.split('/') for i in result.split("|")]
request_list = request.split('/')
final_result_list = [
f"{request_list[2]}.{reply[2]}"
for reply in replies
if request_list[1] == reply[1]
]
print(final_result_list)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句