如何使用Python将列表中的特定项目检索并将其写入文件

时间:2019-07-05 00:35:25

标签: python list file if-statement any

更新
所以我在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()

没有错误消息。
预期输出:请参见以上更新
给定输出文件路径下的新文件,列出了肯定的结果行。因此,在这种情况下,文件上应该包含这些行。 鲍勃 东西东西东西 位置 ?

当前输出请参见上述更新
唯一正在发生的积极回报是: 物物物物

0 个答案:

没有答案