python - Python:从文本中提取字符串
问题描述
我有以下格式的文本:
>>name of section a keyword
#a
some text
some text
some text
>>END_SECTION
>>name section b keyword
#a
some text
some text
some text
>>END_SECTION
continues...
“关键字”可以是通过、失败或警告。
我想编写一个可以得到以下输出的代码:
name of section keyword
问题是我对python很陌生,不知道如何从文本文件中提取字符串,而结束标记(关键字)可能在三个不同的单词之间有所不同。
我尝试使用 # 符号作为字符串的结束标记,但它不起作用。我试过的代码是:
class get_word(object):
def get_sentences(self, name_section):
with open(filename) as file_content:
file_content.read().splitlines()
for line in file_content:
if name_section in line:
start_line = file_content.index(line)
end_line = file_content[start_line:].index('#')
data = file_content[start_line:start_line + end_line]
return data
我已将代码导入到不同的脚本并编写了以下代码:
import get_word
for data in f.get_sentences('name_section_a'):
print(data)
但给出以下错误:
ValueError: False is not in list
有一个更好的方法吗?例如可以使用 re.match() 吗?
任何帮助将不胜感激!
解决方案
您期望的确切输出尚不清楚,但您可以使用正则表达式来提取字段:
import re
re.findall('(?<=^>>)(?!END_SECTION)(.*)', text, re.M)
输出:
['name of section a keyword', 'name section b keyword']
如果要分隔关键字并删除数字:
re.findall('(?<=^>>)(?!END_SECTION)(.*)\s+\w+\s+(\w+)', t, re.M)
输出:
[('name of section', 'keyword'), ('name section', 'keyword')]
输入:
text = '''>>name of section a keyword
#a
some text
some text
some text
>>END_SECTION
>>name section b keyword
#a
some text
some text
some text
>>END_SECTION'''
推荐阅读
- notepad++ - Notepad ++在行首和字符串之间查找某个字符
- php - 为什么检查txt文件中的重复项对txt文件第一行中存储的信息不起作用?
- mysql - 如何处理这个使用一对多连接的查询中的重复值,为什么即使使用 group_concat 也会出现?
- javascript - 我在画布中的图像在页面开始后消失
- angular - 有什么方法可以知道在primeng multiselect中何时移除芯片?
- function - 在 kotlin 中验证名称
- node.js - 谷歌云设置有问题,我的密钥文件不断收到无效的 arg 类型
- android - 自定义 android lint 规则未执行
- r - 根据另一组具有相应结尾的变量,重新编码与字母 A、B 等相对应的多组变量
- javascript - 如何将元素添加到 Javascript 中的对象数组?