我想根据用户输入打印出特定的文本行。到目前为止,我有这个:
list = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")
listo = list.read()
nlines = 0
x = raw_input()
x.lower()
x.capitalize()
if listo.find(x) != -1:
linesr = listo.index(x)
defines = list.readlines(linesr)
print defines
print linesr
else:
print "Nope!"
但是当我试用它时,行号错了,它没有打印出任何东西。这没有任何错误,所以我不知道什么是错的。
如何制作一个程序,根据用户输入打开并从文本文件中读取特定的文本行?
答案 0 :(得分:1)
更多 pythonic 方法就是:
search = raw_input().lower().capitalize()
with open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt") as datafile:
for line in datafile:
if search in line:
print line
break
else:
print 'Line not found'
with
打开文件,以便自动关闭。in
答案 1 :(得分:0)
首先,不要将list用作变量名。你正在隐藏内置函数list
。
data_file = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")
其次,请勿使用read()
阅读该文件,请使用readlines()
阅读,因为您真的更喜欢线条。
lines = data_file.readlines()
line_no = int(raw_input("Gimme a line number:"))
try:
print lines[line_no]
except IndexError:
print "Nope"
答案 2 :(得分:0)
第一个问题:x.lower()
和x.capitalize()
不会更改字符串。没有办法在Python中更改字符串。您只能创建新字符串。 x.lower()
和x.capitalize()
创建新字符串。如果您希望x
成为新字符串的名称,则需要自己执行此操作:
x = x.lower().capitalize()
第二个问题:在使用listo = list.read()
读取整个文件后,您就在文件的末尾。尝试再次读取该文件将不再读取,因此defines = list.readlines(linesr)
无法读取任何内容。
答案 3 :(得分:0)
listo = list.read()
。执行此操作后,指向文件的列表指针到达文件末尾。所以
list.readlines()
除非你做,否则将再次无效
list.seek(0)
再次将指针指向文件的开头。
答案 4 :(得分:0)
如果您将文本作为输入,则以下方式将非常有用
list = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")
listo = list.readlines()
nlines = 0
x = raw_input()
x.lower()
x.capitalize()
for sentences in listo:
if x in sentences:
print sentences
答案 5 :(得分:0)
这是一种实现您所需要的简单方法(假设您想要打印所有以您提供的sting作为输入的行):
datalist = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")
listo = datalist.readlines()
nlines = 0
x = raw_input()
x = x.lower()
x = x.capitalize()
for y in list0:
if y.startswith(x):
print y
以下是您应该记住的一些小事:
不要将列表设置为变量名称,因为它是内置函数
x.lower()
或x.capitalize()
不会更改x。它只返回字符串的修改版本。为了重新使用修改后的字符串,将其设置为变量然后使用它。
list.readlines(linesr)
给出了必须从文件中读取的字节数,而不是索引换行符中的行
答案 6 :(得分:0)
list = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")
listo = list.read()
lines = listo.split("\n")
nlines = 0
x = raw_input()
x.lower()
x.capitalize()
if len(lines)>int(x):
defines = lines[int(x)-1]
print x
print defines
else:
print "Nope!"
试试这段代码。
首先,它将打印您从shell输入的行号
之后将打印文件的指定行。(例如,如果x为3,则将打印文档的第3行)
答案 7 :(得分:0)
切勿将built_in_函数名称用作变量名称。
file_1 = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt.txt")
listo = file_1.readlines()
line_number = raw_input()
for lines in range(len(listo)):
if int(line_number) == lines:
print listo[lines]
else:
print "enter a line number between 1 to ", len(listo)
break
如果您希望行号为user_input,则会从文件中获取相应的行。