用于计算文本文件中的第1位,第2位和第2位数的代码

时间:2015-09-06 05:35:03

标签: python string macos terminal grep

我一直在努力寻找能够从文本文件中单独给出所有(1,2,3,...,9)数字的第一个数字之和的代码。我还想调整/修改第二个和第一个数字的代码。有人能帮忙吗?到目前为止我所做的是: 对于第一个数字:         fgrep -oE“[[:digit:]] {1,}”'filename'| grep“^ 1”| wc -l 对于第二个数字:         fgrep -oE“[[:digit:]] {2,}”'filename'| grep“^ 1”| wc -l <​​/ p>

为了获得其他数字(2,3,....,9),我将“^ 1”修改为例如“^ 2”等等...... 我很确定我得到的第二位数公式的结果肯定是错误的.... 我需要紧急帮助,谢谢! :)

1 个答案:

答案 0 :(得分:1)

一般来说,你可以轻松做到这样的事情......

import re

def sum_nums_in_text_by_indices(text, indices=slice(0,1)):
    return sum(int(n[indices]) for n in re.findall('\d+', text))

示例:

>>> sum_nums_in_text_by_indices('123 123')              # first digits
2

>>> sum_nums_in_text_by_indices('123 123', slice(1,2))  # second digits
4

>>> sum_nums_in_text_by_indices('123 123', slice(0,2))  # first and second digits
24

为了正确使用它,您应该熟悉Pythons Slice Notation。 (文件:slice()

该功能可以进一步简化:

def sum_nums_in_text_by_indices(text, start=0, stop=1):
    return sum(int(n[start:stop]) for n in re.findall('\d+', text))


>>> sum_nums_in_text_by_indices('123 123')
2

>>> sum_nums_in_text_by_indices('123 123', start=1, stop=2)
4

>>> sum_nums_in_text_by_indices('123 123', start=0, stop=2)
24