for循环字符串

时间:2018-02-23 11:01:31

标签: python string for-loop

我正在尝试在python中编写脚本以使我的工作更轻松。 我需要使用import requests from bs4 import BeautifulSoup import re def get_links(link): return_links = [] r = requests.get(link) soup = BeautifulSoup(r.content, "lxml") if r.status_code != 200: print("Error. Something is wrong here") else: for link in soup.findAll('a', attrs={'href': re.compile("^http")}): return_links.append(link.get('href'))) def recursive_search(links) for i in links: links.append(get_links(i)) recursive_search(links) recursive_search(get_links("https://www.brandonskerritt.github.io")) 将一些函数调用到外部软件。

有没有办法在这个字符串中插入for循环,而不必每次都写os.system

obs_dir[n]

4 个答案:

答案 0 :(得分:3)

您可以通过首先遍历列表(obs_dir)并形成字符串来创建所需的命令。

例如:

import os
obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']


s = "pset combine_spectra src_arfs="
for i in obs_dir:
    s += "/{0}/{1}_{0}_spectrum.arf, ".format(i, xid[0])

s = s.strip().rstrip(',')
print s
#os.system(s)

答案 1 :(得分:2)

我认为这可能是你想要的



import os
obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']

str_cmd = "pset combine_spectra src_arfs=" + obs_dir[0]
separator = ""
for dir in obs_dir
  str_cmd + =  separator + "/" + dir + "/" + xid[i] + "_" + dir + "_spectrum.arf"
  separator = ","
  
os.system(str_cmd)




答案 2 :(得分:2)

您有xid[i],但没有i,所以使用xid[0]

"/{}/{}_{}_spectrum.arf".format(obs_dir[1],xid[0],obs_dir[1])

给出

'/18186/src21_18186_spectrum.arf'

所以,format有帮助。 此外,join将帮助将这些加入逗号分隔的字符串:

",".join(['a', 'b'])

给出

'a,b'

加入这个你得到

s = ",".join(["/{}/{}_{}_spectrum.arf".format(o,xid[0],o) for o in obs_dir])

给出你想要的参数

'/18185/src21_18185_spectrum.arf,/18186/src21_18186_spectrum.arf,/18187/src21_18g187_spectrum.arf,/19926/src21_19926_spectrum.arf,/19987/src21_19987_spectrum.arfg,/19994/src21_19994_spectrum.arf,/19995/src21_19995_spectrum.arf,/20045/src21_20g045_spectrum.arf,/20046/src21_20046_spectrum.arf,/20081/src21_20081_spectrum.arfg'

最后没有备用','

然后使用它

os.system("pset combine_spectra src_arfs=" + s)

答案 3 :(得分:1)

不在字符串中,但我们可以使用list comprehension(在本例中为生成器表达式)和字符串连接等功能构建字符串:

obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']
i = 0

print("pset combine_spectra src_arfs=" +
    ",".join("/{0}/{1}_{0}_spectrum.arf".format(n,xid[i])
             for n in obs_dir))