首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据清洗.文本清洁剂澄清

数据清洗.文本清洁剂澄清
EN

Stack Overflow用户
提问于 2022-05-07 11:51:29
回答 2查看 28关注 0票数 0
代码语言:javascript
复制
def string_clean(s):
    
    cleaned_string = "".join([i for i in s if not i.isdigit()])
    return cleaned_string

这段代码工作得很好。但是,我想知道为什么联接方法中的for循环包含在方括号中。另外,为什么会出现这样的语法,是否有一种方法可以根据通常遇到的基本for-循环语法来构造它。例如:

代码语言:javascript
复制
   for i in s:
      if not i.isdigit():
         return ""+ i

我知道这个例子充其量只是粗略的,与我的编码能力是平行的。但是,如果你有时间的话,我会非常感谢你的反馈。

EN

回答 2

Stack Overflow用户

发布于 2022-05-07 12:16:30

联接方法中的for循环是因为它是一个列表理解,它生成一个列表。这是必要的,因为str.join()需要一个可迭代的,例如一个列表。

是的,您可以将其构造为一个普通的循环,但是列表理解通常被认为更简洁、更Python,并由Python的创建者Guido自己推荐。您可以使用vanillafor循环来复制结果,如下所示,但通常不推荐这样做:

代码语言:javascript
复制
def clean_string(s):
    cleaned_string = ''
    for i in s:
        if not i.isdigit():
            cleaned_string += str(i)
    return cleaned_string
票数 1
EN

Stack Overflow用户

发布于 2022-05-07 12:07:06

您的示例返回第一个不是数字的字符。foor循环应该是这样的:

代码语言:javascript
复制
newString = ""
for i in s:
    if not i.isDigit():
        newString += i
return newString
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72152210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档