3

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

代码

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

测试.txt

ABCABC
XYZXYZ

输出

ABCABC

期望的输出

ABCAB
XYZXY
4

4 回答 4

10

改变这个seqs=seqs[:-1]

list comprehension

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

笔记:

  • 您的旧方法中的问题是seq字符串列表,即["ABCABC","XYZXYZ"]. 您只是在最后一项ABCABC解释输出的项目之前获得该项目。
  • 我所做的是从列表中获取字符串并省略它的最后一个字符。
于 2016-01-12T09:41:21.763 回答
5
with open('test.txt') as file:
    for seq in file:
        print seq.strip()[:-1]

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

于 2016-01-12T09:41:04.127 回答
4

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

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

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

于 2016-01-12T09:43:33.807 回答
2

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

with open('test.txt') as file:
    seq = file.read().splitlines()
    for word in seq:
        word = word[:-1]
        print word
于 2016-01-12T09:41:54.590 回答