Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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/8/design-patterns/2.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从文本文件中的行中读取特定字符?_Python_Text_Io_Character - Fatal编程技术网

如何使用python从文本文件中的行中读取特定字符?

如何使用python从文本文件中的行中读取特定字符?,python,text,io,character,Python,Text,Io,Character,我有多个.txt文件,其中包含多行类似的内容: [class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825 [class2] 14:-31.8679 7:-32.3582 2:-32.4127 1:-32.7257 8:-32.9804 16:-33.2156 我想知道如何读取:之前的数字并将其存储在数组中。或者不使用RE,如果您确定文件的语法保持不变,可以使用以下方法: >>> import re &g

我有多个.txt文件,其中包含多行类似的内容:

[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825
[class2] 14:-31.8679 7:-32.3582 2:-32.4127 1:-32.7257 8:-32.9804 16:-33.2156

我想知道如何读取
之前的数字并将其存储在数组中。

或者不使用RE,如果您确定文件的语法保持不变,可以使用以下方法:

>>> import re
>>> text = "[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825"
>>> map(int, re.findall(r'(\S+):\S+', text)) # You could also do map(float,...)
[1, 9, 13, 2, 17, 8, 14]
>>> arr
['[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825', '[class2] 14:-31.8679 7:-32.3582 2:-32.4127 1:-32.7257 8:-32.9804 16:-33.2156']
>>> newArr = [map(lambda y: int(y[:y.index(":")]),x.split(" ")[1:]) for x in arr]
>>> newArr
[[1, 9, 13, 2, 17, 8, 14], [14, 7, 2, 1, 8, 16]]

更新:

如果您有多个文件,您可能会这样做(基于@jamylak更清晰的我的解决方案版本):


其中,
fileNames
是您正在谈论的文件数组

,或者不使用RE,如果您确信文件的语法保持不变,可以使用以下方法:

>>> arr
['[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825', '[class2] 14:-31.8679 7:-32.3582 2:-32.4127 1:-32.7257 8:-32.9804 16:-33.2156']
>>> newArr = [map(lambda y: int(y[:y.index(":")]),x.split(" ")[1:]) for x in arr]
>>> newArr
[[1, 9, 13, 2, 17, 8, 14], [14, 7, 2, 1, 8, 16]]

更新:

如果您有多个文件,您可能会这样做(基于@jamylak更清晰的我的解决方案版本):


其中,
fileNames
是您正在谈论的文件数组

我会使用regex,但这里的版本没有,比@strustmaster的解决方案更清晰

>>> text = "[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825"
>>> [int(x.split(':')[0]) for x in text.split()[1:]]
[1, 9, 13, 2, 17, 8, 14]

我会使用正则表达式,但这里有一个没有的版本,比@structmaster的解决方案更清晰

>>> text = "[class1] 1:-28 9:-315 13:-354227 2:-36.247 17:-342 8:-34 14:-3825"
>>> [int(x.split(':')[0]) for x in text.split()[1:]]
[1, 9, 13, 2, 17, 8, 14]

@是的,是的。这只是另一种方法:)我不知道我问的问题是否正确。我会说得更具体一些。我有25个.txt文件,每个文件包含354行。每一行看起来都像我贴的。@thebjorn是的,是的。这只是另一种方法:)我不知道我问的问题是否正确。我会说得更具体一些。我有25个.txt文件,每个文件包含354行。每一行看起来都和我贴的一样。也许你也可以这样多行:
[[int(x.split(“:”)[0])对于行中的x.split()[1:]对于arr中的行]
非常感谢!这就是我要找的!这真的帮了我很大的忙。@strustmaster是的,那会有用的,我只是展示了一个小例子,以便OP可以扩展它。@aiureaaindicatotyo没问题,但是regex更好@jamylak所以对于每个文件,我应该执行smth,比如f=open('path','r')text=f.readlines(),然后执行拆分函数?可能您也可以这样做,需要多行代码:
[[int(x.split(':')[0])用于行中的x。split()[1:]用于arr中的行]
非常感谢!这就是我要找的!这真的帮了我很大的忙。@strustmaster是的,那会有用的,我只是展示了一个小例子,以便OP可以扩展它。@aiureaaindicatotyo没问题,但是regex更好@jamylak所以对于每个文件,我应该执行smth,比如f=open('path','r')text=f.readlines(),然后执行拆分函数?