我有一个装满票证信息的CSV文件。我创建了一个小脚本,将票证编号以空格分隔输入到列表中,该列表搜索CSV文件中的每个票证,如果找到票证,它会输出该行的信息。
我的问题是,如果我搜索的票证不在CSV文件中,它只会跳过它并继续,但我希望它告诉我该票证不在文件中。据我所知,它正在按行或行搜索CSV文件。如果我尝试一个else语句,它将开始打印CSV文件中的每一行,如果该票据不在该行中。
我需要能够输入多个票号并让python单独搜索每个票号。如果它在第1列中找到票证,则从该行打印信息,如果在第1列的任何行中没有找到票证,则打印出该票证,后跟“不在文件中”。
import csv
file = csv.reader(open('Path To CSV file', "rb"), delimiter=",")
newticket = raw_input('Enter Ticket Numbers:').split()
for line in file:
for tickets in newticket:
if tickets == line[1]:
print(tickets, line[36], line[37])
如果您的CSV文件不是很大,我建议您阅读整个内容,将您想要的数据提取到字典中,并以票号为键。搜索dict非常快。
我修改了您的文件打开代码,以使用with语句,如果读取文件时出现问题,该语句将正常失败。顺便说一句,没有必要将逗号指定为CSV分隔符,因为这是默认的分隔符。
import csv
with open('Path To CSV file', "rb") as f:
data = {line[1]: (line[36], line[37]) for line in csv.reader(f)}
newtickets = raw_input('Enter Ticket Numbers:').split()
for ticket in newtickets:
line = data.get(ticket)
if line:
print(ticket, line)
else:
print(ticket, "not found")
dict.get
方法返回无
,如果键不在判决中,尽管如果需要,您可以指定另一个默认返回值。所以我们可以像这样重写该部分:
for ticket in newtickets:
line = data.get(ticket, "not found")
print(ticket, line)
或者,我们可以在操作符中使用:
for ticket in newtickets:
if ticket in data:
print(ticket, data[ticket])
else:
print(ticket, "not found")
所有3个版本的效率大致相同,请选择您认为最具可读性的版本。
> Eclipse 具有此功能,您可以在其中搜索文件夹中的任何文件。PhpStorm 中是否有这样的功能? 是否有缩进的快捷方式,如何自定义? 谷歌了一下,但没有结果。
我是这里的 unix/linux 新手..完全新手。 我想在Unix环境下搜索大(日志)文件。因此,我尝试使用grep命令 然而,它只是快速滚动,我看不到所有的事件。我看到它已经完成了……可能是用管道将“”命令与其他命令连接起来。但我不知道是什么。基本上,我希望能够运行一个命令,查看输出,并在查看找到的结果时自己滚动该输出。 请帮帮我。。
我正在编写一种方法来搜索列表形式的文字文件,搜索用户输入的文字,但如果找到一个字母,程序将返回一个肯定的结果。例如,如果我搜索“f”,当没有单词时,它将返回字典中有一个单词“f”
问题内容: 我是Lucene的新手,在创建 用于查询文本文件集合的 简单代码时遇到一些问题。 我尝试了此示例,但与新版本的Lucene不兼容。 UDPATE: 这是我的新代码,但是仍然无法使用。 问题答案: Lucene是一个相当大的主题,涉及很多类和方法,通常您必须至少了解一些基本概念才能使用它。如果您需要快速可用的服务,请改用Solr。如果您需要对Lucene的完全控制,请继续阅读。我将介绍一
问题内容: 这应该很简单,但是我无法理解-“编写一个在给定目录中搜索特定文件名的程序。” 我找到了一些硬编码的文件名和目录的示例,但是我需要目录名和文件名都与用户输入的相同。 问题答案: 您可以尝试这样的事情: 这是输出:
朋友们,我有一段代码,它读取文本文件并搜索匹配的单词,但在搜索文本文件时存在不确定性。有时它能够匹配单词,有时它不能,尽管单词存在于文本文件中。 代码如下: 以下是我的文本文件内容: 有人知道为什么会这样吗?假设我在文本文件中添加一个单词“finish”,然后搜索它,它总会找到它。但是,如果我的搜索词是“dadas”或“dadist”,则在et中生成null。