【问题标题】:List the first words per line from a text file in Python列出 Python 文本文件中每行的第一个单词
【发布时间】:2016-02-26 06:49:49
【问题描述】:

我需要选择每一行的第一个单词并从文本文件中列出它们:

I would copy the text but it's the formatting is quite screwed up. will try 所有其他文本都是不必要的。

我试过了

string=[]
for line in f:
   String.append(line.split(None, 1)[0]) # add only first word

来自另一个解决方案,但它不断返回“索引超出范围”错误。

我可以使用string=text.partition(' ')[0] 从第一行获取第一个单词 但我不知道如何对其他行重复此操作。

我还是 python 和网站的新手,我希望我的格式是可以忍受的! (打开时,我对文本进行编码以接受符号,就像这样 wikitxt=open('racinesPrefixesSuffixes.txt', 'r', encoding='utf-8') 这可能是问题吗?)

【问题讨论】:

  • 请不要发布图片。将它们作为文本发布。并且不要将变量命名为string,因为这不是一个好习惯
  • 下次会记住这一点,谢谢。

标签: python file text line word


【解决方案1】:

它引发IndexError 的原因是因为特定行是空的。 你可以这样做:

words = []
for line in f:
    if line.strip():
        words.append(line.split(maxsplit=1)[0])

这里line.strip() 正在检查该行是否仅包含空格。如果它只包含空格,它将简单地跳过该行。

或者,如果你喜欢list comprehension

words = [line.split(maxsplit=1)[0] for line in f if line.strip()]

【讨论】:

  • 谢谢,但现在它带回了 []。这是我从头到尾的代码:(我的上帝,格式让我尝试解决这个问题)wikitxt=open('racinesPrefixesSuffixes.txt', 'r', encoding='utf-8') wiki=wikitxt.read() #taking specific part of the text file start = '#Racines' end = '#' racinesgros=((wiki.split(start))[1].split(end)[0]) words = [line.split(maxsplit=1)[0] for line in wikitxt if line.strip()] print(words) 如果我在函数中使用 racinesgros 而不是 wikitxt,它将带回列表中文件中的每个字母。
  • 当您执行wiki=wikitxt.read() 时,实际上是将整个文件读入一个字符串。通常您不想这样做,但如果必须这样做,您可以将[line.split(maxsplit=1)[0] for line in wikitxt if line.strip()] 替换为[line.split(maxsplit=1)[0] for line in wiki.splitlines() if line.strip()]str.splitlines() 函数会将一个字符串拆分为行的字符串列表。
  • 我明白了!解决了它非常感谢你!将此类文件导入 python 以使用的最佳方法通常是什么?我没有义务将它用作单个字符串,我可以看到它是如何导致问题的。
  • 很高兴为您提供帮助!如果对您有用,请将答案标记为已接受。由于您似乎正在尝试在特定标记处开始和结束,因此您可以使用上面的 for 循环语法,除了不立即检查该行之外,不要开始实际拆分和附加,直到您遇到一行包含start 使用start in line。一旦开始并遇到包含end 的行,您就可以将break 跳出循环。另请查看 with statement 以了解惯用的 Python。
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 2020-06-05
  • 1970-01-01
  • 2021-09-05
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多