【问题标题】:Python - Use Delimiter to Cut Off OutputPython - 使用分隔符切断输出
【发布时间】:2016-03-05 23:58:13
【问题描述】:

对于某些人来说,下面的解决方案可能看起来很“基本”;我已经尝试了大量的源代码和大量的阅读来完成这项任务,并且不断收到我几乎无法阅读的输出,这些输出根本无法执行,或者只是不让我脱离循环。

我尝试过使用: split()splitlines()、import re - re.sub()replace() 等。

但我只能使用基本字符串使它们成功,但在使用带有分隔符的文本文件时却不行。我不完全确定如何使用 for 循环遍历文本文件,尽管我在 Python 中使用它们来创建依赖于增量的批处理文件。我对当前的任务感到很困惑。

================================================ ============================

问题:

我创建了一个包含以下信息的文本文件 (file.txt):

2847:784          3637354:
347263:9379       4648292:
63:38940          3547729:

我想使用第一个冒号 (:) 作为我的分隔符,并让我的输出仅打印每行上出现在它前面的数字。我希望它看起来像下面这样:

2847
347263
63

我已经阅读了几个主题并尝试使用编码解决方案,但没有收到我想要的输出,我认为我也不完全理解其中许多解决方案在说什么。我已经阅读了几本关于该主题的书籍和网站,但无济于事,所以我现在求助的是为了检索可能对我有帮助的代码,然后我将尝试使用它来形成我自己的理解。我希望这不会让任何人觉得他们为我工作太努力了。到目前为止我尝试过的是:

tt = open('file.txt', 'r').read()
[i for i in tt if ':' not in i]


vv = open('file.txt', 'r').read()
bb = vv.split(':')
print(bb)


vv = open('file.txt', 'r').read()
bb = vv.split(':')
for e in bb:
    print(e)


vv = open('file.txt', 'r').read()
bb = vv.split(':')
lines = [line.rstrip('\n') for line in bb]
print(lines)


io = open('file.txt', 'r').read()
for line in io.splitlines():
print(line.split(" ",1)[0]


with open('file.txt') as f:
lines = f.readlines()
print(lines)

每一个的输出都没有给我我想要的,但我不确定我做错了什么。有没有我可以咨询的来源以获得指导。我一直在阅读论坛的“流利的 Python”、“使用 Python 进行数据处理”、“自动化无聊的东西”和“艰难地学习 Python”,但我无法解决这个问题。提前感谢您的帮助。

【问题讨论】:

  • 您将第一个列表理解设置为什么? (您正在执行[i for i in tt if ':' not in i],但没有将该值设置为任何值。)
  • 你试过print("".join(line.partition(":")[0] for line in open('file.txt')))吗?
  • @jsve 老实说,我并不完全理解代码。我只能说,以这种方式发布它实际上给了我输出。当我编辑它以反映以下 (我用 tt 替换最后的 i) 我完全没有收到:'[i for i in tt if ':' not in tt]'
  • @zondo - 我的话!!!谢谢!!我试过你的方法,但是用“\n”替换了“”,效果很好!!非常感谢先生。我想知道您是否可以推荐一些我可以做的阅读以准确了解“加入”方法的工作原理。顺便说一句,我目前的代码是这样的:print("\n".join(line.partition(":")[0] for line in open('asdf.txt'))) 你知道我可以从哪里读到我可以发现如何仅通过 for 循环来完成此操作,更类似于我尝试过的其他方法吗?
  • Here 是它的文档。 "f".join(["this", "that", "there"]) 结果为 "thisfthatfthere"。我想你会明白的。然而,我放入的内容是所谓的generator expression。它遍历每一行并采用line.partition(":")[0]line.partition(":")line 拆分为三部分:":" 之前、":"":" 之后,因此 [0]":" 之前的内容。

标签: python file text delimiter cut


【解决方案1】:

试试这个:

with open('file.txt') as myfile:
    for line in myfile:
        print(line.split(':')[0])

【讨论】:

  • 这太棒了!!!它就像一个魅力。谢谢 willnx 看了一下,我想这对我来说也很容易理解和破译。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多