更新
所以我在strip()
上添加了list1
。我包括最新结果。
更新后的输出文件
location?bobThings things thingyes, bob, thing, sara, more, location, ?
是的,所有这些都返回一行。
它确实错过了搜索中的yes
,现在将所有一行都粉碎了。
我如何获得它,以便它对每个阳性结果返回之前和新行之间的空格?
因此,我是python的新手,仍然在学习。我正在编写一个程序,该程序将允许用户输入关键字并在输入文件中搜索这些关键字,然后将结果保存到输出文件中。
到目前为止,我可以通过它进行搜索,但是它只返回肯定命中的某些行,而不是所有行。我原本以为这是因为文件中每个项目都附加了新行,但我设法将其删除,但仍未在输出文件中提供正确的信息。
因此输入文件说:
临时聊天记录
年龄
性
位置
?
性
年龄
电话号码
话
鲍勃
事物事物事物
2018年9月3日
关键字搜索是(用户输入): 是的,鲍勃,东西,萨拉,更多,位置,?
输出文件仅得到以下回报:
物物物物
我尝试删除'\ n',我尝试保存到新文件,以防万一我覆盖的原始文件有问题,我尝试过re.search和re.replace,我是我曾尝试制作一个函数,但这是我得到的最接近该程序执行此功能的函数。我认为问题出在代码的最后一部分,但是我为最后一部分中使用的所有代码提供了代码。在最后一节中,有额外的打印行,因为我试图查看代码在程序的这一部分中进行过程中发生了什么。
# Ask user for the path to the text file they would like to use
print ("Please provide a valid path to the chat log text (.txt) file. Example: C:\ Users \ USERNAME \ Documents")
# Save the path from the user input
path1 = input ()
# Checking the user input for the .txt file extension
if os.path.splitext(path1)[1] != ".txt":
print (path1 + " is an unknown file format. Please provide a .txt file.")
path1 = input()
else:
print ("Thank you for providing a text file.")
# Using a while loop to ensure this is a valid path
while not os.path.isfile(path1):
print ("Please provide a valid path to the chat log text (.txt) file.")
path1 = input ()
print ("File was successfully retrieved.")
# Ask user for needed keywords or symbols
user_keywords = input("What keywords or special symbols would you like to search the provided file for?\n"
"Please separate each entry with a comma.\nIf you would like to just search for question marks,"
" please just type n.\n")
# Holding list, using comma as a way to separate the given words and symbols
list1 = [s.strip().lower() for s in user_keywords.split(',')]
# Print list for user to see
print("You have entered the following keywords and/or special symbols: ", list1)
# Opens a new file for saving the results to.
print("Please list the path you would like the new file to save to. Example: C:\ Users \ NAME \Desktop\File name.")
outFileName = input()
# Opens the file under review.
with open(path1,'r') as f, open(outFileName, 'w') as w:
f = f.readlines()
f[:] = [f.rstrip('\n') for f in f]
for line in f:
if any(s in line.lower() for s in list1):
print(f)
print(list1)
print(line)
w.write(line)
w.close()
没有错误消息。
预期输出:请参见以上更新
给定输出文件路径下的新文件,列出了肯定的结果行。因此,在这种情况下,文件上应该包含这些行。
鲍勃
东西东西东西
位置
?
当前输出请参见上述更新
唯一正在发生的积极回报是:
物物物物