python一括作成変数と値付け操作


簡単な状況:
コアはexec関数で、exec関数は私たちが入力したコード文字列を実行できます。exec関数の簡単な例:

exec ('print "hello world"')
hello world
execに文字列「print」「hello world」が入ってきました。execは実行文字列の中のコードprint「hello world」です。この特性から、変数の定義をプレースホルダで実現できます。

exec ("temp%s=1"%1)
このコードはexecにtemp 1=1を実行させるという意味です。文字列の中の%sは‘1’で代用されました。私たちは外でもう一つの循環をすると、複数の変数の定義ができます。

for i in range(10):
    exec ("temp%s=1"%i)
ここでは、1サイクルによって10個の変数が生成され、iの変化は0から9までである。変数iで%sを置換するので、毎回の循環の中で、それぞれtemp 0、temp 1に値を割り当てます。
実行結果:

複数のプレースホルダを置換する場合は、このように書くことができます。

exec ("temp%s=%d"%(i,i))
ここでは、プレースホルダを文字列、整数の形で置換します。

temp1=1
また、

df_vars = [ 'df_%s_head' %i for i in range(0,10)]
df_vars:

['df_0_head',
 'df_1_head',
 'df_2_head',
 'df_3_head',
 'df_4_head',
 'df_5_head',
 'df_6_head',
 'df_7_head',
 'df_8_head',
 'df_9_head']
たとえば:

 for i in range(8):
     exec('v' + str(i) + ' = ' + str(i))
     print('v' + str(i) + ':', eval('v' + str(i)))
出力結果:

例:
pythonでは、順序の変数名を生成し、値を付与します。

a_1 = []
a_2 = []
a_3 = []
.....
a_100 = []
文字列を変数に変換する関数execを利用できます。

for i in range(1,100):
    b = 'a_' + str(i)
    exec(b + '= %r' % [])
ちょっと複雑なネーミング
抽出:
D:/MyData/Excel/input/MarketHoliday_2018.xls
D:/MyData/Excel/input/MarketHoliday_2019.xls
です。
D:/MyData/Excel/input/MarketHoliday_2023.xls

year = [2018,2019,2020,2021,2022,2023] 
file_path = 'D:/MyData/Excel/input/MarketHoliday_'  #  :         
まずyearをdictに変えて、Forサイクルの中で使うために、ここでパンdasを使います。

import pandas as pd
year = pd.Series(year)
year_dict = year.to_dict()
取得:

for i in year_dict:
    exec('Var_'+str(year_dict[i])+'='+'"'+(file_path + str(year_dict[i])+'.xls'+'"'))
    print('Var_'+str(year_dict[i])+':',eval('Var_'+str(year_dict[i])))
最終結果:

pythonダイナミックに変数名と割当値を生成します。
今晩データを処理する時偶然に1つの命名の上の難点に出会って、しかし自動処理を実現するために断固として1本の入力のパラメーターに着手しないで、私は必ずそれを解決して、問題はこのようです。
まず一つの方法を呼び出したいです。そして入力した変数は文字列でもいいですが、直接文字列を入力するとだめです。
ここにコードを付けます。

t=['42342lh','234']
s='fgdfhdfhdfh'
exec(s+'=%s'%'t[0]')
print(fgdfhdfhdfh)
for i in range(2):
    m=f'names{i}'
    exec(m+'=%s'%'t[i]')
print(names1)
mは自分で法則のこのsingを押すことができて、同時に規則的に読み取ることができて、最後に各mは変数になりました。
以上は個人の経験ですので、参考にしていただければと思います。