【问题标题】:Strip list items with multiple arguments error带多个参数错误的剥离列表项
【发布时间】:2017-11-20 09:52:07
【问题描述】:

我正在尝试从文本文件中删除很多内容以重写它。 文本文件有数百个项目,每个项目由 6 行组成。 我让我的代码工作到将所有行放入一个数组中,识别每个项目中唯一重要的 2 个并删除空格,但任何进一步的剥离都会给我以下错误:

'list' 对象没有属性'strip'

这是我的代码:

x = 0
y = 0
names = []
colors = []
array = []

with open("AA_Ivory.txt", "r") as ins:

    for line in ins:
        array.append(line)

def Function (currentElement, lineInSkinElement):
    name = ""
    color = ""
    string = array[currentElement]
    if lineInSkinElement == 1:
        string = [string.strip()]
#       string = [string.strip()]
#       name = [str.strip("\n")]
#       name = [str.strip(";")]
#       name = [str.strip(" ")]
#       name = [str.strip("=")]
        names.append(name)
        return name
#   if lineInSkinElement == 2:
#       color = [str.strip("\t")]
#       color = [str.strip("\n")]
#       color = [str.strip(";")]
#       color = [str.strip(" ")]
#       color = [str.strip("=")]
#       colors.append(color)
#       return color
    print "I got called %s times" % currentElement
    print lineInSkinElement
    print currentElement

for val in array:
    Function(x, y)
    x = x +1
    y = x % 6

#print names
#print colors

在名称的if 语句中,删除第一个# 会给我错误。 我尝试将列表项转换为字符串,但随后我在字符串周围得到了额外的[]

colorif 语句可以忽略,我知道它有问题,试图解决这个问题是我遇到当前问题的原因。

【问题讨论】:

    标签: python arrays file strip multiple-arguments


    【解决方案1】:

    然后我在字符串周围得到了额外的 []

    您可以遍历它来绕过列出的字符串。例如:

    for lst, item in string:
        item = item.strip("\n")
        item = item.strip(";")
        item = item.strip(" ")
        item = item.strip("=")
        name.append(item)
        return name
    

    这将使您进入列表中的字符串,您可以附加剥离的字符串。

    如果这不是您想要的,请发布一些您正在使用的数据以进行澄清。

    【讨论】:

    • 这只会去掉 \n 元素。摆脱它们是没有问题的。问题是在那之后继续剥离。包含名称的行还包含不需要和不需要的元素,即。 e. “=”或“;” .但是,在第一次剥离字符串后,它会将其保存或作为列表处理。
    • 对,我以name.append(item)为例。您可以从同一字符串中删除更多元素。我的意思是,如果将其保存为列表,则需要遍历列表才能剥离字符串。
    • 哦,我现在明白了。出于某种原因,它没有向我展示代码的中间部分。除了使用变量名“str”而不是“item”之外,我尝试了同样的事情,它让我得到了帖子中所述的错误代码
    • 有趣。您可以在问题中发布一些数据吗?这样解决可能更容易:)
    • @Harri - 永远不要使用已经用于内置类型/函数的变量名,例如 strlist 等,因为您无法确定实际情况是什么这种情况下的问题。
    【解决方案2】:

    好的,我找到了解决方案。这是我的一个相当愚蠢的错误。由于 [] arroung strip 函数使结果成为列表或列表项,因此发生错误。删除它们修复了它。现在松了口气,有点傻,但是松了口气。

    【讨论】:

      【解决方案3】:

      您也可以使用以下代码在一行中完成。

      item = item.strip("\n").strip("=").strip(";").strip()
      

      最后一条将去除空白。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-22
        • 2014-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        相关资源
        最近更新 更多