2016-03-23 14 views
0

Python'u öğrenmeye başladım ve bir regex ve liste sıkıştırması olan bir txt dosyasındaki tüm sayıların nasıl toplandığını merak ettiniz. Bir txt dosyasındaki sayıları toplamak için 1-liner regex

yazdım aşağıdaki ancak findall arayışında boş listelerden numaralarını eklemekten kaçının nasıl emin:

import re 

print (sum([int(num[0]) for num[0] in re.findall('[0-9]+', open('xxx.txt').read().split())])) 
+0

çalıştı aşağıdaki fakat ya da çalışmak için doesnt görünüyor: baskı (sum ([int (num [0]) için len [num] = 0 re.findall içinde ('[0-9] + ', open (' regex_sum_256911.txt ') read(). split())])) – Lin

+0

Negatif sayılar veya kayan nokta sayısı olabilir mi? Eğer evet ise, daha karmaşık bir regex modeline ihtiyacınız var. – RootTwo

cevap

0

Sen re.findallfileobj.read() çalışması gerekir beri giriş verileri bölmek gerekmez. Ayrıca, re.findall sonuç listesi üzerinde yineleme yaparken ara değişkendeki dizini belirtmeyin.

print (sum(int(num) for num in re.findall('[0-9]+', open('xxx.txt').read()))) 
+0

Efendim, harikasınız! – Lin

+0

Sadece yaptım, teşekkürler! – Lin

0

\d+ ile boş dizeleriniz olmayacaktır. Harita ile tüm dizelerinizi tamsayıya dönüştürecek ve sonra bunları sum() ile toplayacaksınız.

print(sum(map(int, re.findall('\d+', open('xxx.txt').read())))) 
+0

büyük günler teşekkür ederim! – Lin

+0

Size yardımcı olduysa bu cevabı kabul edin! – wtpoo

İlgili konular