Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 如何提取一个txt数并传递给数组_Python - Fatal编程技术网

Python 如何提取一个txt数并传递给数组

Python 如何提取一个txt数并传递给数组,python,Python,我有一个包含10行的.txt,如下所示: [-3 -4 -5 -6 -7], 0 import sys with open(sys.argv[1], 'r') as f: contents = f.read() print(contents) 我想提取[…]之间的数字,并将其传递给整数数组,我读取.txt的方式如下: [-3 -4 -5 -6 -7], 0 import sys with open(sys.argv[1], 'r') as f: contents

我有一个包含10行的.txt,如下所示:

[-3 -4 -5 -6 -7], 0
import sys

with open(sys.argv[1], 'r') as f:
    contents = f.read()
    print(contents)
我想提取[…]之间的数字,并将其传递给整数数组,我读取.txt的方式如下:

[-3 -4 -5 -6 -7], 0
import sys

with open(sys.argv[1], 'r') as f:
    contents = f.read()
    print(contents)
我需要在昏迷前分开这个部分? 有什么功能可以做到这一点?
我该怎么办?

试试这样的东西,但有点肉味:

with open('your_file.txt', 'r') as f:
    new_list = [item.split(',')[0][1:-1].split() for item in f.readlines()]
    print(new_list)
我的错,没有看到文件会像参数一样提供,那么

#!/bin/python3

from sys import argv

with open(argv[1], 'r') as f:
    new_list = [item.split(',')[0][1:-1].split() for item in f.readlines()]
    print(new_list)
顺便说一句,regex解决方案似乎也不错:

with open(argv[1], 'r') as f:
    new_list = [re.findall('-?\d+', item.split(',')[0]) for item in f.readlines()]
    print(new_list)
这应该做到:

import sys

with open(sys.argv[1], 'r') as f:
    contents = f.read()
    arrays = []
    for line in contents.split('\n'):
        array_string = line.split(',')[0]
        array = [int(i) for i in array_string[1:-1].split()]
        arrays.append(array)
根据您的示例,这将返回:

arrays

[[-3, -4, -5, -6, -7]]
test=“[-3-4-5-6-7],0”
#在“,”上拆分
test=test.split(“,”)
#删除“[”和“]”并在空白处拆分
res=test[0].lstrip(“[”).rstrip(“]).split(“”)
#是否将独立值添加到列表中?
res.append(测试[1])
#将值强制转换为int
res=[int(x)表示以res表示的x]
#把结果打印出来
打印(res)
结果:

[3,-4,-5,-6,-7,0]


您可以用一行将数据读取到列表中,如下所示

import sys

data = [ [ int(field) for field in row.split(sep=",")[0][1:-1].split() ] for row in open(sys.argv[1])]
您将获得例如:

[[-3, -4, -5, -6, -7]]
读取模式默认为
打开
,因此您可以忽略它。 你看一下文件的每一行。 对于每一行,使用分隔符拆分该行。 左侧部分可以简单地拆分为一个列表。 此列表包含可以转换为int的字符串字段。

请尝试以下操作:

import sys
import re 

with open(sys.argv[1], 'r') as f:
    contents = f.read()
    arrays = []
    for line in contents.split('\n'):
        string = line.split(',')[0]
        arrays.append(re.findall("[+-]?\d+(?:\.\d+)?",string))

您可以将文件逐行读取到变量中,我们将其称为
line
,然后像这样使用
split
函数:
array\u str,other\u num=line.split(',')
。然后,您可以使用
array_str[1:-1].split()拆分左侧的数字,因为默认情况下,拆分将对空白进行操作。
[1:-1]
用于修剪支架。这将为您提供一个以字符串形式包含数字的列表。欢迎使用堆栈溢出!请拿起,阅读,和,并提供一个。“为我实现此功能”是本网站的主题。你必须做一个诚实的尝试,然后问一个关于你的算法或技术的具体问题。我很确定我没有要求任何人为我编写代码,但是如果有方法,如果有一些函数可以做到这一点。即使你没有明确要求人们为你编写代码,那也是你实际要求的“我该怎么办?请阅读我分享的链接,特别是关于一个好问题的链接。好的问题包括你自己的尝试和研究,因为在一天结束时,这是你的问题,所以你需要努力解决它。此外,在你的问题中包括你已经尝试过的,让回答的人看到什么不起作用,这样他们就不需要花时间尝试同样的事情。或者,如果您的实现中有一个小错误,他们可以指出。这在和中进行了总结