<p>有两种方法对我有效,你可以同时使用它们,但是我建议使用第二种方法,因为第一种方法使用<code>eval()</code>,并且在用户输入情况下使用它是有风险的。如果您不使用用户提供的输入字符串,也可以使用方法1</p>
<p>1)使用<code>eval()</code></p>
<pre><code>import pyarrow as pa
column_types={}
column_types['A'] = 'pa.'+'string'+'()'
column_types['B'] = 'pa.'+'int32'+'()'
final_col_types={key:eval(val) for key,val in column_types.items()} # calling eval() to parse each string as a function and creating a new dict containing 'col':function()
from pyarrow import csv
table = csv.read_csv(filename,convert_options=csv.ConvertOptions(column_types=final_col_types))
print(table)
</code></pre>
<p>2)通过创建包含特定字符串的可调用函数名的主词典<code>dict_dtypes</code>。并进一步使用<code>dict_dtypes</code>将字符串映射到其相应的函数</p>
<pre><code>import pyarrow as pa
column_types={}
column_types['A'] = 'pa.'+'string'+'()'
column_types['B'] = 'pa.'+'int32'+'()'
dict_dtypes={'pa.string()':pa.string(),'pa.int32()':pa.int32()} # master dict containing callable function for a string
final_col_types={key:dict_dtypes[val] for key,val in column_types.items() } # final column_types dictionary created after mapping master dict and the column_types dict
from pyarrow import csv
table = csv.read_csv(filename,convert_options=csv.ConvertOptions(column_types=final_col_types))
print(table)
</code></pre>