python - iscapitalized () [duplicate]

Использование базовой функции R aggregate:

aggregate(value ~ name, dat1, I)

# name           value.1  value.2  value.3  value.4
#1 firstName      0.4145  -0.4747   0.0659   -0.5024
#2 secondName    -0.8259   0.1669  -0.8962    0.1681
14
задан Blücher 8 September 2011 в 21:24
поделиться

4 ответа

Почему бы не использовать str.isupper();

In [2]: word = 'asdf'   
In [3]: word[0].isupper()
Out[3]: False

In [4]: word = 'Asdf'   
In [5]: word[0].isupper()
Out[5]: True
35
ответ дан Simon 20 August 2018 в 20:37
поделиться
  • 1
    Это хороший ответ, но я хотел узнать, что я сделал не так в коде, который я написал, а не просто искать другое решение той же проблемы. В любом случае, спасибо. – Blücher 8 September 2011 в 21:48
  • 2
    @gameFace Хорошая точка. Иногда лучшим решением является другое решение. ;) – AlG 9 September 2011 в 12:41
  • 3
    @ Blücher В этом случае я предлагаю Code Review вместо Stack Overflow. – Ryan 10 June 2018 в 05:28

Синтаксическая ошибка связана с тем, что вам нужны скобки:

range(string.ascii_lowercase)

Но на самом деле вам не следует использовать диапазон. Это так же просто, как:

if word[0] in string.ascii_lowercase
0
ответ дан Foo Bah 20 August 2018 в 20:37
поделиться
  • 1
    Тестирование, если оно находится в ascii_lowercase, может привести к проблемам локализации в будущем - лучше использовать isupper (). Например, что, если слово находится на кириллице? Первым символом будет верхний регистр, но он не будет в ascii_lowercase. – Alex Martini 8 September 2011 в 21:25
  • 2
    string.ascii_lowercase не является целым числом и не является допустимым аргументом для range(). – geoffspear 8 September 2011 в 21:26
  • 3
    @Wooble объясняет, почему возникла синтаксическая ошибка в первую очередь. Поэтому я написал «вам не следует использовать диапазон». после этого, чтобы убедиться, что я не сторонник использования этого решения – Foo Bah 8 September 2011 в 21:27
  • 4
    @Alex Martini благодарю вас, указывая на проблемы локализации. – Blücher 8 September 2011 в 21:49

Это встроено для строк:

word = "Hello"
word.istitle() # True

, но обратите внимание, что str.istitle смотрит, будет ли каждое слово в строке заглавным, поэтому это может дать вам сюрприз:

"Hello world".istitle() # returns False!

Если вы просто хотите проверить самый первый символ строки, используйте это:

word = "Hello world"
word[0].isupper() # True
15
ответ дан orlp 20 August 2018 в 20:37
поделиться
  • 1
    @Downvoter: помочь объяснить? – orlp 8 September 2011 в 21:23
  • 2
    Висцеральная реакция: в исходном посте перед редактированием вы не дали понять, что такие фразы, как «Hello world», и "HELlo" потерпеть неудачу. istitle проверяет, что каждое слово удовлетворяет формату & lt; uppercase & gt; & lt; последовательность символов нижнего регистра & gt ;, и было неясно, было ли это ограничение, предоставляемое OP. Откат назад – Foo Bah 8 September 2011 в 21:26
  • 3
    Спасибо, я видел это, но хотел создать что-то сам, а не использовать istitle (). – Blücher 8 September 2011 в 21:26
  • 4
    @gameFace: Почему? Если это для excersice, то я сомневаюсь, что это полезность, но если это для реального кода, чем просто плохо. – orlp 8 September 2011 в 21:27
  • 5
    @nightcracker Это упражнение, я чувствую, что больше узнаю, создавая что-то новое (даже если это полезно сомнительно), а не слепо, используя готовые решения - по крайней мере, на том этапе, на котором я сейчас. – Blücher 8 September 2011 в 21:35
word = "Hello"
capitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if word[0] in capitals:
    print("It is a capital.")
0
ответ дан user8879510 20 August 2018 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: