如何从文本文件打印特定行的文本?

2024-09-29 23:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据用户输入打印出一行特定的文本。到目前为止,我有这个:

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!"

但当我试用时,行号是错的,它没有打印出任何东西。这没有任何错误,所以我不知道出了什么问题。在

如何制作一个基于用户输入从文本文件中打开并读取特定文本行的程序?在


Tags: 用户文本txtreadopenuserslistprint
3条回答

第一个问题:x.lower()x.capitalize()不更改字符串。在Python中无法更改字符串。只能创建新字符串。x.lower()x.capitalize()创建新字符串。如果希望x作为新字符串的名称,则需要亲自执行此操作:

x = x.lower().capitalize()

第二个问题:一旦你用listo = list.read()读入整个文件,你就在文件的末尾了。再次尝试读取该文件将不会再读取,因此defines = list.readlines(linesr)无法读取任何内容。在

一种更具Python式的方法是:

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'
  1. with打开文件,这样它将自动关闭。在
  2. 不要把整个文件读入内存。只需重复这些行。在
  3. 使用in查找文本

首先,不要使用list作为变量名。您正在隐藏内置函数list。在

data_file = open("/Users/nicejojo12/Desktop/Python/DictionaryDefinitions.txt")

第二,不要用read()读文件,用readlines()读它,因为你真的更喜欢行。在

^{pr2}$

相关问题 更多 >

    热门问题