【问题标题】:how to remove a string from a list in Python如何从 Python 中的列表中删除字符串
【发布时间】:2021-12-07 12:34:03
【问题描述】:

列表的第一个元素是一个字符串,其余的是数字。我想在中位数等数字之间执行数学运算,但我无法删除第一个元素,也就是字符串,因为我不断收到此错误

AttributeError: 'str' object has no attribute 'pop'

我试过弹出、删除等

with open('/Users/solidaneziri/Downloads/Data_Exercise_1.txt') as infile:
    for line in infile:
        alter = line.split()[0]
        alter.pop()
        statistics.median(alter)

print(Alter)

Alter
28
25
28
26
22
20
25
21
21
25
24
25
26
22
26
20
27
22
22
26
23
20
22
26
24
22
20
20
19
21
19
19
33
23
21
29
21
25
26
19
23
20
25
21

输入(改变) 输出 = 22.5 中位数

【问题讨论】:

  • string.replace("to_replace", "")
  • @DaniMesejo 这只会用空字符串替换一个字符串它仍然无法解决我的问题
  • 我认为如果你把输入的例子和你真正想用它做什么会更好

标签: python python-3.x list error-handling


【解决方案1】:

你可以这样使用:

import statistics
list_ = []
with open('1.txt') as infile:
    for line in infile:
        if line.split()[0].isdigit():
            list_.append(int(line.split()[0]))
statistics.median(list_)

【讨论】:

  • 我仍然遇到同样的错误
  • 在我的回答中我没有弹出方法。我不明白为什么你有同样的错误
  • 对不起,我的意思是TypeError: unsupported operand type(s) for /: 'str' and 'int'
  • 你的文件格式是什么?
  • 它是一个文本文件.txt
【解决方案2】:

您的错误是将List 的第一个元素置于line.split()[0]

如果每行由一个字符串后跟数字组成,而您只想删除第一个字符串,则应该这样做:

with open('/Users/solidaneziri/Downloads/Data_Exercise_1.txt') as infile:
    for line in infile:
        alter = line.split()
        alter.pop(0)
        statistics.median(line)

还要注意,您必须使用pop() 引入要删除的List 的位置索引。

【讨论】:

  • 这个仍然会出现同样的错误。 Data_exercise 包含许多带有数字列表的列。 Alter是他们中的第一个
  • 忘记了split() 部分,它应该这样工作。就像注释一样,在您的代码中,“alter”不是第一行,而是您正在阅读的文件的每一行。
  • 这是我第一次使用 python 编程。是否更改我的文件的第一列也是如此
【解决方案3】:

直接跳过第一行。 next 消耗文件迭代器的一个元素:

import statistics

with open('/Users/solidaneziri/Downloads/Data_Exercise_1.txt') as infile:
    header = next(infile)
    data = [int(line.split()[0]) for line in infile]
print(statistics.median(data))

输出:

22.5

【讨论】:

  • 谢谢,但接下来给我的是第一行而不是第一列
  • @nsol 好吧,您还没有确切地显示您的输入数据是什么样的,您想要跳过第一行。
  • 我现在做得很好。
  • 谢谢你。这是一个有效的
【解决方案4】:

通过不包括 0 索引来删除字符串,然后将表示数字的字符串转换为实际的浮点数,以便它们可以用于您的计算。

with open('/Users/solidaneziri/Downloads/Data_Exercise_1.txt') as file:
    for line in file:
        numbers = line.split()[1:]
        numbers = map(float, numbers)
        statistics.median(numbers)

【讨论】:

    【解决方案5】:

    my_list = [“一”、“二”、“三”、“四”、“五”、“六”] 打印 (my_list)

    假设我想要删除一号和四号

    my_list.pop(3) my_list.pop(0) 打印(我的列表)

    #输出将是

    [“二”、“三”、“五”、“六”]

    【讨论】:

    • 您好,您的回答与问题有什么关系?我看到你试图回答标题,而不是帖子本身,这实际上是一个不同的问题。此外,考虑适当的格式(使用反引号分隔代码摘录),阅读起来会更友好。
    【解决方案6】:
    test_list = ["bad", 2, 4, 6 ,1, 3] 
    
    print ("Original list : " + str(test_list)) 
    R = "bad"
    while(R in test_list) : 
        test_list.remove(R) 
    print ("List after removing string " + str(test_list))
    

    【讨论】:

    • 请附上解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2020-05-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多