Python 如何让代码显示文本文件中一定数量的字符

Python 如何让代码显示文本文件中一定数量的字符,python,Python,在我的作业中,我需要查找一个单词,只返回一组字符(80个,单词周围每边40个),而不使用nltk或正则表达式 我已经把代码设置成这样了 open = open("a2.txt", 'r') file2read = open.readlines() name = 'word' for line in file2read: s2 = line.split ("\n", 1) if name in line: i = line.fin

在我的作业中,我需要查找一个单词,只返回一组字符(80个,单词周围每边40个),而不使用nltk或正则表达式

我已经把代码设置成这样了

open = open("a2.txt", 'r')
 file2read = open.readlines()
  name = 'word'
    for line in file2read:
        s2 = line.split ("\n", 1)
        if name in line:
           i = line.find(name)
           half = (80 - len(name) - 2) // 2
           left = line[i - half]
           right = line[i + len(word) + half]
           print(left + word + right)
但我的打印结果看起来像(更新的屏幕截图),而不是我希望找到的80个字符的行


很抱歉,如果这是一个真正的新手错误,因为我只参加了3周的课程,而且我一直在搜索,似乎无法得到答案,而不是执行由于windows/Unix不同而可能不一致的阅读行。您也可以一次阅读全文:

您不需要将其按行分隔:

with open('a2.txt', 'r') as file:
    a = file.read()
    name = 'word'
    if name in a:
       i = a.find(name)
       half = (80 - len(name) - 2) // 2
       left = a[i-half:i]
       right = a[i+len(name):i + len(name) + half]
       print(left + name + right)
这样你就可以一次读完整个课文。查找您的单词并打印所需的80个字符。这是输出

ut. even know say trip tip sandwich. words describe it. meat eater, love it. b

如果你想让它适用于文本中的所有单词。你需要做一个循环=),但我相信你可以自己解决

从您的输出判断,行似乎没有正确分割(这可能是由于不同的原因造成的,其中之一是Windows和Unix之间的换行符不一致)。你能确认
file2read
包含多行,而不仅仅是整个文件作为一个百万长的行吗?txt文件看起来确实像文本块(如屏幕截图所示)a2.txt是从以前的文件中写入的新文件,该文件是根据空格分割的……这可能是文本块的原因吗?我的意思是,如果您使用空格分隔,这当然不应该成为一个理由。同样,只需检查
file2read
对象的长度,并验证它不是1。我检查了它,它返回了10000个字符的长度。我将查看下面提供的步骤并重试。非常感谢你的帮助!请注意,长度10000表示的不是字符,而是行。另外,如果您以前没有使用过python,我强烈建议您使用交互式shell来探索数据(例如,如果您正在使用,您可以使用Spyder,它附带一个脚本编辑器以及一个交互式shell。祝您的作业顺利!感谢您的详细解释。除了打印行的最后一部分,我几乎已经将代码输出了。我似乎无法在concordance视图中将其输出。我的code是i=行。查找(单词)左=行[i-39]右=[i+40]打印(左+单词+右)谢谢你的提示。我已经尝试过了,但是仍然没有成功。我不知道如何在这里的评论中发布一个截图:/哦,等等,傻我,我删除了我的旧代码:/也非常感谢你的帮助!我一定把我的代码弄得更糟了,因为它看起来比以前更糟了哈哈。我想这可能与拆分有关lines函数。检查len line后,答案大于1,但它也会给出一个垂直的数字字符串,我在写轨道上吗?一旦我从readlines更改为just read,我的代码就没有输出