这些单引号在第2行的开头做什么?

时间:2018-12-07 12:36:24

标签: python python-3.x join syntax

我在某个随机网站上发现了以下代码,说明了级联:

data_numb = input("Input Data, then press enter: ")
numb = ''.join(list(filter(str.isdigit, data_numb)))
print('(' + numb[:3] + ') ' + numb[3:6] + '-' + numb[6:])

我想知道

中的单引号是做什么的
numb = ''.join(

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

join(iterable)str类中的方法。

  

返回一个字符串,该字符串是可迭代的字符串的串联。   如果其中包含任何非字符串值,则会引发TypeError   可迭代的,包括字节对象。元素之间的分隔符是   提供此方法的字符串。

''.join(("Hello", "World"))将返回'HelloWorld'

';'.join(("Hello", "World", "how", "are", "you"))将返回'Hello;World;how;are;you'

join对于需要在字符串列表(或任何可迭代的字符串)中的每个元素之间添加定界符非常有用。

看起来什么都没有,但是如果您不使用join,由于边缘效应,这种操作通常很难实现:

对于字符串列表或元组:

def join(list_strings, delimiter):
    str_result = ''
    for e in list_strings[:-1]:
        str_result += e + delimiter

    if list_strings:
        str_result += list_strings[-1]

    return str_result

对于任何可迭代的:

def join(iterable, delimiter):
    iterator = iter(iterable)
    str_result = ''
    try: 
        str_result += next(iterator)
        while True:
            str_result += delimiter + next(iterator)
    except StopIteration:
        return str_result

由于join适用于任何可迭代的项目,因此您无需根据过滤结果创建列表。

numb = ''.join(filter(str.isdigit, data_numb))

也可以

答案 1 :(得分:0)

Join方法用于将字符串与任何可迭代对象连接。在此示例中,第一个字符串是一个空字符串,也由两个单引号''表示(不要将单引号与单引号引起混淆)。

字符串对象的join()方法将其与提供的另一个可迭代对象连接在一起。因此,如果第一个字符串是空字符串,则结果字符串是iterable中元素的串联输出。

它的用途是什么

  1. 它可用于连接字符串列表。例如:

    a = ['foo', 'bar']
    b = ''.join(a)
    print(b) # foobar
    
  2. 它可用于连接字符串。 (因为字符串也是可迭代的)

    a = "foobar"
    b = ''.join(a)
    print(b) # foobar
    

您可以想到更多用例,但这只是要点。您也可以参考文档here