[問題] 請問exec的用法

看板Python作者 (aovo)時間2年前 (2021/07/03 16:37), 2年前編輯推噓2(203)
留言5則, 3人參與, 2年前最新討論串1/1
各位前輩好,我有個沒幾行的function裡面用到exec函式,如下所示,主要是想把input data裡的資料按照時間切分,生成新的data,不過執行後一直在報錯,想請問各位前輩我 哪裡用錯了,感謝。 ============================================================================== def cut_date(df, column_name, start, end): for i in range(len(df[column_name])-1): if df[column_name][i][:4] == str(start-1) and df[column_name][i+1][:4] == str(start): x = i print('index %s: %s' % (x, df[column_name][x])) for i in range(len(df[column_name])-1): if df[column_name][i][:4] == str(end) and df[column_name][i+1][:4] == str(end+1): y = i print('index %s: %s' % (y, df[column_name][y])) exec('{}_mod = {}.iloc[x+1:y+1, :]'.format(df, df)) exec('{}_mod.reset_index(drop=True, inplace=True)'.format(df)) 然後我用了下列指令執行 cut_date(df, '時間', 2013, 2016) 錯誤訊息如下 Traceback (most recent call last): File "/Users/User/opt/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-30-d5d2e894f930>", line 1, in <module> cut_date(df, '日期', 2013, 2016) File "<ipython-input-22-c0e363e719e0>", line 12, in cut_date exec('{}_mod = {}.iloc[x+1:y+1, :]'.format(df, df)) File "<string>", line 1 日期 ^ IndentationError: unexpected indent -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.129.138 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1625301474.A.622.html

07/03 17:23, 2年前 , 1F
這是縮排錯誤吧 要不要檢查一下那邊有多(
07/03 17:23, 1F

07/03 17:23, 2年前 , 2F
還是真的排錯了
07/03 17:23, 2F

07/03 23:36, 2年前 , 3F
不是縮排吧,你用df format出來的string就不會是df
07/03 23:36, 3F

07/03 23:36, 2年前 , 4F
format後的string用exec會出現縮排錯誤
07/03 23:36, 4F
※ 編輯: aovo (123.194.129.138 臺灣), 07/04/2021 12:19:54

07/04 19:46, 2年前 , 5F
感謝指教,我再試試
07/04 19:46, 5F
文章代碼(AID): #1Wu27YOY (Python)