【问题标题】:How to remove final character in a number of strings?如何删除多个字符串中的最后一个字符?
【发布时间】:2016-04-16 20:26:12
【问题描述】:

我有许多字符串,我想删除每个字符串的最后一个字符。当我尝试下面的代码时,它会删除我的第二行字符串,而不是删除最后一个元素。以下是我的代码:

代码

with open('test.txt') as file:
    seqs=file.read().splitlines()
    seqs=seqs[:-1]

test.txt

ABCABC
XYZXYZ

输出

ABCABC

期望的输出

ABCAB
XYZXY

【问题讨论】:

  • 想想seqs在第一次赋值之后是什么......它是所有的列表(即字符串列表)。您需要另一个循环来修改每一行。在这种情况下,列表理解将成为您的朋友。
  • 你处理的是字符串数组,而不是字符串数组

标签: python string trailing


【解决方案1】:

更改此seqs=seqs[:-1]

list comprehension

seqs=[val[:-1] for val in seqs]

注意:

  • 旧方法中的问题是seq 是一个字符串列表,即["ABCABC","XYZXYZ"]。您只是在最后一项 ABCABC 之前获得该项目,这解释了输出。
  • 我所做的是从列表中获取字符串并省略它的最后一个字符。

【讨论】:

    【解决方案2】:
    with open('test.txt') as file:
        for seq in file:
            print seq.strip()[:-1]
    

    这会遍历文件中的每一行并打印省略最后一个字符的行

    【讨论】:

    • 你的方法会比我的好答案消耗更少的内存:)。
    • 除了print,你也可以yield这个值。然后可以写for value in truncated():,对每个截断的值做进一步处理。
    【解决方案3】:

    seqs 是行列表。您需要遍历这些行以访问每一行:

    with open('test.txt') as file:
        seq = file.read().splitlines()
        for word in seq:
            word = word[:-1]
            print word
    

    【讨论】:

      【解决方案4】:

      file.read().splitlines() 返回一个列表。因此,以下可以解决您的问题:

      enter with open('test.txt') as file:
          data = list(map(lambda x: x[:-1], file.read().splitlines()))
      

      然后您可以将列表重新加入字符串:"\n".join(data)

      【讨论】:

        猜你喜欢
        • 2019-01-22
        • 2020-03-12
        • 2011-12-15
        • 2021-12-11
        • 2011-11-18
        • 1970-01-01
        • 1970-01-01
        • 2017-08-19
        相关资源
        最近更新 更多