如何返回(x)给定字符串中的字符数?

时间:2015-01-19 08:38:57

标签: python python-3.x

我已经有一段时间了,我已经离这么近了。

我有两个问题需要完成作业。我完成的第一个。它应该返回给定字符串的前三个索引,如果字符串少于3个字母,则不返回任何内容。它看起来像这样:

enter image description here

第二个类似,但更多涉及。问题是:

enter image description here

希望这能解释我的问题。我无法弄清楚如何让输入的数字与我试图打印的索引数量相对应。在第一个问题中,它很简单,因为它始终只是前三个使用的索引。现在,它是(n)个指数。

非常感谢任何帮助(我使用的是Python 3.4.2)

4 个答案:

答案 0 :(得分:3)

Strings support sub-stringing in Python

def returnN(string, length):
    return string[:length] if len(string) >= length else ''

行动中:

>>> returnN('hello', 2)
'he'
>>> returnN('hello', 5)
'hello'
>>> returnN('BYE', 1)
'B'
>>> returnN('BYE', 10)
''

答案 1 :(得分:1)

使用字符串方法的len和slice方法,如:

def returnN(string, length):
  length_string = len(string)
  if length > length_string:
    return ''
  return string[0:length]

print(returnN('hello', 5))
print(returnN('hello', 2))
print(returnN('Nye', 1))
print(returnN('OKOK', 10))

或简单的方式:

def returnN_S(string, length):
  return string[: length] if length <= len(string) else ''

print(returnN_S('hello', 5))
print(returnN_S('hello', 2))
print(returnN_S('Nye', 1))
print(returnN_S('OKOK', 10))

或一行:

returnN_H = lambda string, length: string[: length] if length <= len(string) else ''
print(returnN_H('hello', 5))
print(returnN_H('hello', 2))
print(returnN_H('Nye', 1))
print(returnN_H('OKOK', 10))
希望有所帮助。

答案 2 :(得分:0)

Python中的

Unicode stringsimmutable Unicode代码点sequences Unicode代码点只是从0到sys.maxunicode的数字,例如Nº128516: ('\U0001f604') Unicode字符串s的子字符串/片段(例如s[:2])返回包含2 Unicode代码点的新Unicode字符串。
len(s)返回字符串s中的Unicode代码点数 可以使用Python源代码中的''字符串文字表示空字符串。


如果文字尺寸太小,要从字符串或空字符串返回给定数量的user-perceived characters,您可以使用\X regular expression (it matches an eXtended grapheme cluster)

#!/usr/bin/env python3
import regex # $ pip install regex

def returnN(text, n):
    chars = regex.findall(r'\X', text)
    return ''.join(chars[:n]) if len(chars) >= n else ''

text = 'a\u0300 biento\u0302t'
print(text) # -> à bientôt
print(returnN(text, 4)) # -> à bi

单个用户感知的字符(例如)可以跨越多个Unicode代码点,例如U+0061U+0300


术语字符含糊不清。它可能意味着字节,Unicode代码点,字形集群在不同的情况下。

答案 3 :(得分:-2)

input_string = "hello"

def returnN(string, n):
    return string[:n]

output = returnN(input_string, 3)

全部