Python 从字符串库中,模板函数不能与int值一起使用?
我正在尝试使用字符串中的模板。我有一个目录,里面有100个csv文件,其中包含每年的相关数据 例如:Python 从字符串库中,模板函数不能与int值一起使用?,python,string,python-3.x,templates,Python,String,Python 3.x,Templates,我正在尝试使用字符串中的模板。我有一个目录,里面有100个csv文件,其中包含每年的相关数据 例如: yob1881.txt yob1882.txt yob1883.txt yob1884.txt yob1885.txt 现在我想使用模板,这样我就可以循环所有文件。所以我使用了一个范围函数,比如: for year in range(1880,2011): template = Template(/name/year$year) template.substitute(year
yob1881.txt
yob1882.txt
yob1883.txt
yob1884.txt
yob1885.txt
现在我想使用模板,这样我就可以循环所有文件。所以我使用了一个范围函数,比如:
for year in range(1880,2011):
template = Template(/name/year$year)
template.substitute(year)
这将返回一个错误:
TypeError Traceback (most recent call last)
<ipython-input-4-85f21050945a> in <module>()
2 filepath = tp('/pythonDataProjects/Loan Granting/names/yob$year.txt')
3 year = '1880'
----> 4 print(filepath.substitute(year))
/Users/omkar/anaconda/lib/python3.5/string.py in substitute(*args, **kws)
127 raise ValueError('Unrecognized named group in pattern',
128 self.pattern)
--> 129 return self.pattern.sub(convert, self.template)
130
131 def safe_substitute(*args, **kws):
/Users/omkar/anaconda/lib/python3.5/string.py in convert(mo)
117 named = mo.group('named') or mo.group('braced')
118 if named is not None:
--> 119 val = mapping[named]
120 # We use this idiom instead of str() because the latter will
121 # fail if val is a Unicode containing non-ASCII characters.
TypeError:字符串索引必须是整数
我知道错误是什么。然而,我不知道如何解决它
有什么帮助吗 应将参数作为命名参数传递:
for year in range(1880, 2011):
template = Template('/name/year$year')
t = template.substitute(year=year)
您的问题是调用template.substituteyear时没有分配替换。您需要将其格式化为:
template.substitute(year=year)
此外,substitute返回一个新字符串,因此您应该重新分配此模板或将其分配给一个新变量
for year in range(1880,2011):
template = Template("/name/year$year")
template = template.substitute(year=year)
# Or
new_temp = template.substitute(year=year)
暗示
您不使用格式化方法有什么原因吗?你可以通过这样做得到同样的结果
for year in range(1880,2011):
template = "/name/yob{}.txt".format(year)
谢谢@A芒果。很高兴能解决这个错误。不幸的是,这种格式有时会导致可读性问题,特别是对于像我这样的数据科学专家来说,他过去只处理过SAS和R。因此,我们试图使用模板。谢谢你的回复,它也帮助我与格式相处!