【发布时间】:2020-08-19 12:20:18
【问题描述】:
我有一个包含大约 3000 行的 CSV 文件,我已将其作为字符串列表导入 Python 以获得以下内容;
mylist = [('GA0001.abc.123',), ('GA0002.456.cba',), ('GA0003.321.abc',), ('GA0004.xyz.789',)]
有没有办法可以分割所有字符串以删除最后 8 个字符,以便列表如下所示:
newlist = [('GA0001',), ('GA0002',), ('GA0003',), ('GA0004',)]
我尝试过[x[:-8] for x in mylist],但它只会返回[(), (), (), ()]
【问题讨论】:
-
它不是字符串列表。它是一个元组列表,每个元组都包含一个字符串。注意每个字符串后面的逗号。
[x[0][:-8] for x in mylist] -
[x[0][:-8] for x in mylist] -
@roganjosh 或者只是
[x[:-8] for x, in mylist]。 -
值得注意的是这里的区别。如果任何元组的 more 元素超过一个(在第一个元素之后默默地忽略任何元素),
[x[0][:-8] for x in mylist]仍然会成功,而[x[:-8] for x, in mylist]将引发异常。其中哪个更可取可能会有所不同。