Похоже, вы пытаетесь настроить использование итератора для поиска всех вхождений диапазонов, содержащих эту строку.Вы можете сделать это, если хотите, но лучшим решением было бы передать регулярное выражение, подобное следующему:
import re
results = soup.find_all('span', {'id': re.compile('dlROA_ctl\d+_lblROALINE')})
for result in results:
print(result.get_text())
Для быстрого ознакомления с регулярными выражениями я рекомендую https://regex101.com
Чтобы ответить на вопрос, который вы на самом деле задали:
Причина, по которой вы получаете ошибку атрибута, не в том, что код неправильно принимает вашу переменную, а в том, что исходный код, который вы используете для супа, не содержитуказанный вами тег.
Чтобы избежать получения ошибки атрибута, которую вы получаете, вместо этого вы можете сделать следующее:
i = 35
idstring = 'dlROA_ctl'+str(i)+'_lblROALINE'
dict1 = {'id': idstring}
result = soup.find('span', dict1)
if result:
print(result.get_text())
else:
print('no result found')
Если вы по-прежнему не получаете результат, вы можете рассмотретьэтот суп - не то, о чем вы думаете, и может захотеть посмотреть на soup.prettify()