Основной контур этой проблемы состоит в том, чтобы прочитать файл, искать целые числа, используя re.findall(), ища регулярное выражение '[0-9] +', а затем преобразование извлеченных строк к целым числам и суммированию целых чисел.Пояснение списка; уплотнение кода на две строки
Я закончил проблему, но я хотел бы добавить дополнительные данные и сконденсировать код до двух строк.
Это мой исходный код:
import re
fh = raw_input("Enter filename: ")
#returns regex_sum_241882.txt as default when nothing is entered
if len(fh)<1 : fh = "regex_sum_241882.txt"
file = open(fh)
sums = list()
#goes through each line in the file
for line in file:
#finds the numbers in each line and puts them in a list
nums = re.findall('[0-9]+',line)
#adds the numbers to an existing list
for num in nums:
sums.append(int(num))
#sums the list
print sum(sums)
Теперь вот мой текущий компактный код:
import re
lst = list()
print sum(for num in re.findall('[0-9]+',open("regex_sum_241882.txt").read())): int(num))
Он не работает и дает мне SyntaxError: недопустимый синтаксис
Может кто-нибудь указывает мне в правильном направлении? Я чувствую, что делаю то же самое, но я не уверен, что такое синтаксис.
Вы должны смотреть на то, как выражения генератора структурированы: это '(пункт для пункта в итерации)', а не '(для пункта в итерации: пункт)'. – RoadieRich
ohhhhh, я вижу это – rookiesix