Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用regex和re.findall()提取数字并求和_Python_Regex - Fatal编程技术网

Python 无法使用regex和re.findall()提取数字并求和

Python 无法使用regex和re.findall()提取数字并求和,python,regex,Python,Regex,我尝试用正则表达式从文本文件中提取数字。之后,我创建总和 代码如下: import re def main(): sum = 0 numbers = [] name = input("Enter file:") if len(name) < 1 : name = "sample.txt" handle = open(name) for line in handle: stora

我尝试用正则表达式从文本文件中提取数字。之后,我创建总和

代码如下:

import re


def main():

    sum = 0
    numbers = []

    name = input("Enter file:")
    if len(name) < 1 : name = "sample.txt"
    handle = open(name)

    for line in handle:
        storage = line.split(" ")
        for number in storage:
            check = re.findall('([0-9]+)',number)
            if check:
                numbers.append(check)

    print(numbers)
    print(len(numbers))

    for number in numbers:
        x = ''.join(number)
        num = int(x)
        sum = sum + num

    print(sum)

if __name__ == "__main__":
    main()
重新导入
def main():
总和=0
数字=[]
名称=输入(“输入文件:”)
如果len(name)<1:name=“sample.txt”
句柄=打开(名称)
对于线输入句柄:
存储=行。拆分(“”)
对于存储中的数字:
check=re.findall(“([0-9]+)”,数字)
如果检查:
数字。追加(检查)
打印(数字)
打印(len(数字))
对于数字中的数字:
x=''。加入(编号)
num=int(x)
sum=sum+num
打印(总和)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
问题是,如果此字符串
“http://www.py4e.com/code3/“
我将add作为
[4,3]
添加到列表中,然后汇总为
43

你知道我该怎么解决这个问题吗?

我假设你想得到7而不是43

number
变量是一个字符数组。因此,当您使用
join
时,它将变成一个字符串

因此,您可以使用循环来迭代该数组,并将该数组的元素转换为
int
,然后添加到
sum

你可以这样做

import np 
number np.array(number).astype('int').tolist()

如果所有元素的转换都是可能的,那么这将使字符数组转换为整数数组。

我假设不是43,而是7

number
变量是一个字符数组。因此,当您使用
join
时,它将变成一个字符串

因此,您可以使用循环来迭代该数组,并将该数组的元素转换为
int
,然后添加到
sum

你可以这样做

import np 
number np.array(number).astype('int').tolist()

如果可以对所有元素进行转换,这将使字符数组转换为整数数组。

我认为您只需更改
数字。将
附加(检查)
数字中。扩展(检查)
,因为您要将元素添加到数组中。您必须使用
extend()
函数

此外,您不需要在正则表达式中使用

我还尝试检查python上的代码

import re

sum = 0;
strings = [
  'http://www.py4e.com/code3/',
  'http://www.py1e.com/code2/'
];
numbers = [];

for string in strings:
    check = re.findall('[0-9]+', string);
    if check:
        numbers.extend(check)

for number in numbers:
    x = ''.join(number)
    num = int(x)
    sum = sum + num

print(sum)

我认为您只需更改
数字。将
附加(检查)
数字中。扩展(检查)
,因为您希望向数组中添加元素。您必须使用
extend()
函数

此外,您不需要在正则表达式中使用

我还尝试检查python上的代码

import re

sum = 0;
strings = [
  'http://www.py4e.com/code3/',
  'http://www.py1e.com/code2/'
];
numbers = [];

for string in strings:
    check = re.findall('[0-9]+', string);
    if check:
        numbers.extend(check)

for number in numbers:
    x = ''.join(number)
    num = int(x)
    sum = sum + num

print(sum)
当我添加字符串而不是调用在您的代码中未正确处理的文件时,仅供参考。逻辑正则表达式正在运行两个FOR循环,并放置每个值及其自己的列表[[4]、[3]]。我想你的问题是在第一条语句中导入文件的方法。我用您询问的字符串替换了该文件“http://www.py4e.com/code3/“您可以在此处找到正在运行的代码

我在下面运行了这个方法,用数字列表调用一个字符串,效果很好

#### Final conditional loop
   ``` for number in numbers:
        x = ''.join(number)
        num = int(x)
        sum = sum + num
    print(str(sum)) ```
您也可以尝试使用范围或贴图:

for i in range(0, len(numbers)):
        sum = sum + numbers
    print(str(sum))
当我添加字符串而不是调用在您的代码中未正确处理的文件时,仅供参考。逻辑正则表达式正在运行两个FOR循环,并放置每个值及其自己的列表[[4]、[3]]。我想你的问题是在第一条语句中导入文件的方法。我用您询问的字符串替换了该文件“http://www.py4e.com/code3/“您可以在此处找到正在运行的代码

我在下面运行了这个方法,用数字列表调用一个字符串,效果很好

#### Final conditional loop
   ``` for number in numbers:
        x = ''.join(number)
        num = int(x)
        sum = sum + num
    print(str(sum)) ```
您也可以尝试使用范围或贴图:

for i in range(0, len(numbers)):
        sum = sum + numbers
    print(str(sum))

你的意思是你需要匹配独立的数字吗?如
re.findall(r'\b[0-9]+\b',number)
?产生
''的原因是什么。join(number)
?您也可以向我们显示文件内容。信息不足。您需要告诉我们您的预期结果。谢谢您的帮助,我可以通过Than Luong的建议解决方案来解决它。您的意思是您需要匹配独立的数字吗?如
re.findall(r'\b[0-9]+\b',number)
?产生
''的原因是什么。join(number)
?您也可以向我们显示文件内容。信息不足。您需要告诉我们您的预期结果。感谢您的帮助,我可以通过Than LUONG的建议解决方案来解决此问题