【问题标题】:Python - Delete a part of each line of a textfile [duplicate]Python - 删除文本文件每行的一部分[重复]
【发布时间】:2018-02-05 01:14:09
【问题描述】:

我有一个这样的文本文件:

abc123bvjhfvb:dlnvsl|smth
 fsbffsb378hbdcbs:v5v3v|smth
 sdcg87wgn8:vy5b4|smth
 sin87s88vnus:y54545v4v|smth
 rc8n782c:efghrn|smth

如您所见,从第二行开始有一个空格。

如何将这些行转换为这些行?

abc123bvjhfvb:dlnvsl
fsbffsb378hbdcbs:v5v3v
sdcg87wgn8:vy5b4
sin87s88vnus:y54545v4v
rc8n782c:efghrn

我尝试过这样的事情:

lines = open("file.txt").readlines()

for x in lines:
    x.strip(" ").split("|")
    print (x[0])

但它只打印 abc123 的“a”,然后为每一行打印一系列空格。我认为 [0] 会打印第一个字母,而不是在“|”之前打印拆分的第一部分(例如 abc123bvjhfvb:dlnvsl)

【问题讨论】:

  • 字符串是不可变的,你需要将x.strip(" ").split("|")分配给某个变量。
  • 打印 x.replace(" | smth","")
  • x[0] 指的是字符串 x 中的第一个字符,x 是整行。 split() 返回一个结果,你没有分配给任何东西。您需要将结果分配给 y,然后 y[0] 将引用该行的数组中的第一个元素。

标签: python python-3.x list split strip


【解决方案1】:

您需要在拆分位末尾添加 [0],否则您是字符串索引,而不是拆分部分的索引。

您也可以为条带和分割位分配一个变量,然后打印它,即 y = ... print(y)

【讨论】:

  • 谢谢,成功了!
【解决方案2】:

问题在于stripsplit 不会改变x

代码需要用到返回值:

for x in lines:
    x = x.strip(" ").split("|")
    print (x[0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    相关资源
    最近更新 更多