Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_List - Fatal编程技术网

Python 读取文件行并在数字之前获取单词

Python 读取文件行并在数字之前获取单词,python,arrays,list,Python,Arrays,List,我正在写一个代码,在后台打开一个文本文件 f = open(FILENAME, 'r') 我在找写东西的具体行 文件1中的示例: 错误您可以在211547下部的机头546516547部分中找到错误 文件2中的示例: 在元素51423165中的3215467处出现文件中断错误 所以我需要在数字前加上单词。 有什么想法吗? 一切都会帮助我的。谢谢。重复每一行并使用以下列表: >>> line = 'Error you can find the Error in Section N

我正在写一个代码,在后台打开一个文本文件

f = open(FILENAME, 'r')
我在找写东西的具体行

文件1中的示例:

错误您可以在211547下部的机头546516547部分中找到错误

文件2中的示例:

在元素51423165中的3215467处出现文件中断错误

所以我需要在数字前加上单词。 有什么想法吗?
一切都会帮助我的。谢谢。

重复每一行并使用以下列表:

>>> line = 'Error you can find the Error in Section Nose 546516547 in Lower Part 211547'
>>> line = line.split(' ')
>>> [line[i-1] for i, e in enumerate(line) if e.isdigit()]
['Nose', 'Part']
您还可以使用正则表达式:

>>> re.findall(r'([\w]+)\s[0-9]+', line)
['Nose', 'Part']

您可以使用标准库中的
re
(regex)模块执行此操作:

import re

regex = r"(\w+)(?=\s+\d)"  # Find words followed by space(s) and number.
with open(FILENAME, 'r') as f:
    for line in f:
        print(re.findall(regex, line))

您还可以将所有单词转换为一个单词列表,然后找到数字的索引并返回list[index-1]

您的意思是,鼻子部分膝盖和元素将是输出?是的,没错,我的朋友我可能忘了说我正在使用蟒蛇。我会尝试这两种方法。我会让你知道哪一种或哪一种都不起作用。谢谢你。我猜你也可以为I,e在枚举(line)中做
[line[I-1],如果e.isdigit()]
是的,@RoadRunner谢谢,非常感谢您的努力,编辑了我的答案如果我找到了那个单词,现在查找该单词后面的数字(\w+\s+\d+),该怎么办。在这一点上,我建议您仔细阅读正则表达式,因为理解它们将给您足够的灵活性来创建自己的搜索。