我正在撰寫代碼來處理 URL 串列,但是一些 URL 有問題,我需要在我的 for 回圈中傳遞它們。我試過這個:
x_data = []
y_data = []
for item in drop['URL']:
if re.search("J", str(item)) == True:
pass
else:
print(item)
var = urllib.request.urlopen(item)
hdul = ft.open(var)
data = hdul[0].data
start = hdul[0].header['WMIN']
finish = hdul[0].header['WMAX']
start_log = np.log10(start)
finish_log = np.log10(finish)
redshift = hdul[0].header['Z']
length = len(data[0])
xaxis = np.linspace(start, finish, length)
#calculating emitted wavelength from observed and redshift
x_axis_nr = [xaxis[j]/(redshift 1) for j in range(len(xaxis))]
gauss_kernel = Gaussian1DKernel(5/3)
flux = np.convolve(data[0], gauss_kernel)
wavelength = np.convolve(x_axis_nr, gauss_kernel)
x_data.append(x_axis_nr)
y_data.append(data[0])
其中 drop 是先前定義的 pandas DataFrame。以前關于這個主題的問題建議正則運算式可能是要走的路,我已經嘗試過這個過濾掉任何包含字母 J 的 URL(這只是壞的)。
我明白了:
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0581.fit
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0582.fit
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0584.fit
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0587.fit
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0589.fit
http://www.gama-survey.org/dr3/data/spectra/sdss/spec-0915-52443-0592.fit
http://www.gama-survey.org/dr3/data/spectra/2qz/J113606.3 001155a.fit
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-2a3083a3a6d7> in <module>
14 finish_log = np.log10(finish)
15 redshift = hdul[0].header['Z']
---> 16 length = len(data[0])
17
18 xaxis = np.linspace(start, finish, length)
TypeError: object of type 'numpy.float32' has no len()
這與我在嘗試洗掉 J url 之前遇到的錯誤相同,所以很明顯我的正則運算式不起作用。我會很感激一些關于如何過濾這些的建議,并且很樂意根據需要提供更多資訊。
uj5u.com熱心網友回復:
無需比較re.searchwith的結果True。從documentation您可以看到找到匹配項時search回傳 a :match object
掃描字串以查找正則運算式模式產生匹配的第一個位置,并回傳相應的匹配物件。
None如果字串中沒有位置與模式匹配,則回傳;請注意,這與在字串中的某個點找到零長度匹配不同。
因此,當將 amatch object與Truereturn進行比較時False,您的else條件將被執行。
In [35]: re.search('J', 'http://www.gama-survey.org/dr3/data/spectra/2qz/J113606.3 001155a.fit') == True
Out[35]: False
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450715.html
