如何 return 文件中的某些文本,python - 编程新手
How to return certain text in a file, python - New to programming
我有两个文本文件:
File1.txt:
随机词随机词
*** 开始于 ***
需要这些话
*** 结束于 ***
更多随机词
file2.txt:
随机词随机词
更多随机词 *** 开始于 ***
不需要这些字眼
*** 开始于 ***
这里需要这些话
*** 结束于 ***
这些词应该被忽略
到目前为止我已经开发了这个功能:
重新导入
"""函数 returns 小写单词列表
在感兴趣的区域内"""
def get_certain_words_from_file(文件名):
"""defines the given region and returns a list of words inside"""
with open(filename, 'r') as file:
lines = file.read()
list_of_lines = lines.splitlines()
index_start = 0
index_end = 0
for i in range(len(list_of_lines)):
if list_of_lines[i].startswith('***BEGINNING AT '):
index_start += i
if list_of_lines[i].startswith('*** ENDING AT'):
index_end += i
valid_lines = list_of_lines[index_start : index_end]
valid_lines = "".join(str(x) for x in valid_lines)
valid_lines = valid_lines.lower()
valid_lines = valid_lines.split()
valid_words = []
words_on_line = []
for line in valid_lines:
words_on_line = re.findall("[a-z]+[-'][a-z]+|[a-z]+[']?|[a-z]+", line)
for word in words_on_line:
valid_words.append(word)
return valid_words
文件名 = "file2.txt"
字数 = get_words_from_file(文件名)
print(文件名, "加载成功。")
print("找到 {} 个有效单词。".format(len(words)))
print("有效单词列表:")
字中字:
print(word)
当前输出为:
file2.txt 加载正常。
找到 0 个有效词。
有效单词列表:
但我正在尝试获取:
file2.txt 加载正常。
找到 4 个有效词。
有效单词列表:
需要
这些
字数
这里
我的想法是第一部分有问题,但对 python 和整个编程来说是新的,所以不太确定
有什么帮助谢谢!
from what I see - you don't need regex; you can use Python "in" keyword.
filename = 'input_file'
valid_words = ['word1', 'word2']
with open(filename, 'r') as file:
lines = file.read()
list_of_lines = lines.splitlines()
lines_with_word = []
for line in list_of_lines:
for word in valid_words:
if word in line:
lines_with_word.append(line)
print(lines_with_word)
我有两个文本文件: File1.txt:
随机词随机词
*** 开始于 ***
需要这些话
*** 结束于 ***
更多随机词
file2.txt:
随机词随机词
更多随机词 *** 开始于 ***
不需要这些字眼
*** 开始于 ***
这里需要这些话
*** 结束于 ***
这些词应该被忽略
到目前为止我已经开发了这个功能:
重新导入
"""函数 returns 小写单词列表 在感兴趣的区域内"""
def get_certain_words_from_file(文件名):
"""defines the given region and returns a list of words inside"""
with open(filename, 'r') as file:
lines = file.read()
list_of_lines = lines.splitlines()
index_start = 0
index_end = 0
for i in range(len(list_of_lines)):
if list_of_lines[i].startswith('***BEGINNING AT '):
index_start += i
if list_of_lines[i].startswith('*** ENDING AT'):
index_end += i
valid_lines = list_of_lines[index_start : index_end]
valid_lines = "".join(str(x) for x in valid_lines)
valid_lines = valid_lines.lower()
valid_lines = valid_lines.split()
valid_words = []
words_on_line = []
for line in valid_lines:
words_on_line = re.findall("[a-z]+[-'][a-z]+|[a-z]+[']?|[a-z]+", line)
for word in words_on_line:
valid_words.append(word)
return valid_words
文件名 = "file2.txt"
字数 = get_words_from_file(文件名)
print(文件名, "加载成功。")
print("找到 {} 个有效单词。".format(len(words)))
print("有效单词列表:")
字中字:
print(word)
当前输出为:
file2.txt 加载正常。
找到 0 个有效词。
有效单词列表:
但我正在尝试获取:
file2.txt 加载正常。
找到 4 个有效词。
有效单词列表:
需要
这些
字数
这里
我的想法是第一部分有问题,但对 python 和整个编程来说是新的,所以不太确定
有什么帮助谢谢!
from what I see - you don't need regex; you can use Python "in" keyword.
filename = 'input_file'
valid_words = ['word1', 'word2']
with open(filename, 'r') as file:
lines = file.read()
list_of_lines = lines.splitlines()
lines_with_word = []
for line in list_of_lines:
for word in valid_words:
if word in line:
lines_with_word.append(line)
print(lines_with_word)