【问题标题】:How to get the first 2 letters of a string in Python?如何在 Python 中获取字符串的前 2 个字母?
【发布时间】:2014-01-26 03:37:46
【问题描述】:

假设我有一个字符串

str1 = "TN 81 NZ 0025" 
two = first2(str1)
print(two)  # -> TN

如何获取该字符串的前两个字母?为此,我需要 first2 函数。

【问题讨论】:

  • 在这种情况下str1.split()[0] 也可以使用,如果您还需要其他字段可能更有意义。
  • @U2EF1,不,它确实... str[0] 给你第一个字符,你需要 str[:2] 并且拆分也是必要的。
  • @alvas str1.split()[0]str1[0] 是两段截然不同的代码。
  • 但它做同样的事情并实现了单个元素。然后你需要加入然后"".join(str1.split()[:2]) 是多余的,如果没有双倍间距,str[:2] 实现相同。
  • @alvas 谁说str1.split()[:2]? U2EFI 说str1.split()[0]

标签: python string


【解决方案1】:

就像string[:2] 一样简单。如果您需要,可以轻松编写一个 function 来执行此操作。

即使这样,也很简单

def first2(s):
    return s[:2]

【讨论】:

  • 这个是抢前两个字符的正确方法。你回答的OP恰到好处,所以赞成。但是,我永远不会为此使用函数。我更喜欢在代码中明确说明,而不必追踪函数进行验证。如firsttwo = somestring[:2] in-line 在主代码中
  • 我同意,事实上我写了“如果你需要,可以很容易地编写一个函数来完成它。”拥有像first2first3first4 这样的大量函数是没有意义的……
【解决方案2】:

一般情况下,您可以使用string[i:j] 获取从ij 的字符串的字符。

string[:2]string[0:2] 的简写。这也适用于列表。

Learn about Python's slice notation at the official tutorial

【讨论】:

    【解决方案3】:

    下面是简单函数的样子:

    def firstTwo(string):
        return string[:2]
    

    【讨论】:

      【解决方案4】:
      t = "your string"
      

      播放字符串的前 N ​​个字符

      def firstN(s, n=2):
          return s[:n]
      

      默认相当于

      t[:2]
      

      【讨论】:

        【解决方案5】:

        在 python 中,字符串是字符列表,但它们不是明确的列表类型,只是类似列表(即可以将其视为列表)。更正式地说,他们被称为sequence(见http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange):

        >>> a = 'foo bar'
        >>> isinstance(a, list)
        False
        >>> isinstance(a, str)
        True
        

        由于字符串是序列,您可以使用slicing 访问列表的部分内容,由list[start_index:end_index] 表示,请参阅Explain Python's slice notation。例如:

        >>> a = [1,2,3,4]
        >>> a[0]
        1 # first element, NOT a sequence.
        >>> a[0:1]
        [1] # a slice from first to second, a list, i.e. a sequence.
        >>> a[0:2]
        [1, 2]
        >>> a[:2]
        [1, 2]
        
        >>> x = "foo bar"
        >>> x[0:2]
        'fo'
        >>> x[:2]
        'fo'
        

        未定义时,slice notation 以 0 为起始位置,以 len(sequence) 为结束位置。

        在过去的 C 时代,它是一个字符数组,整个问题的动态 vs 静态列表现在听起来像传说,见 Python List vs. Array - when to use?

        【讨论】:

          【解决方案6】:

          如果您的字符串不够长,所有前面的示例都会引发异常。

          另一种方法是使用 'yourstring'.ljust(100)[:100].strip().

          这将为您提供前 100 个字符。 如果您的字符串最后一个字符是空格,您可能会得到一个较短的字符串。

          【讨论】:

          • 不正确:例如''[:2] 只返回 ''。也不例外。
          【解决方案7】:

          为了完整性:您可以为 lambda 函数命名,而不是使用 def

          first2 = lambda s: s[:2]
          

          【讨论】:

          猜你喜欢
          • 2017-02-28
          • 1970-01-01
          • 2013-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-04
          • 1970-01-01
          • 2013-04-03
          相关资源
          最近更新 更多