我正在尝试在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]
答案 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))