我试图将大写字母(包括特殊字母)的索引排成一行。我找到了here以下解决方案:
[i for i, c in enumerate(s) if c.isupper()]
我试过了:
[re.search(r'^([^A-ZÄÖÜ]*[A-ZÄÖÜ]){i}',s).span()[1] for i in range (1,y)]
其中y是s
中的大写字母数。
如果我定义i
,第二个解决方案有效,但在循环下,它返回:
attributeerror'nonetype'对象没有属性'span'。
如何以有效的方式解决它?
答案 0 :(得分:0)
问题是s
以字节表示。它只需要解码为unicode:
s=u'ÖÄÜ' # str to unicode
[i for i, c in enumerate(s) if c.isupper()]
答案 1 :(得分:-1)
Python3:您可以轻松地使用isupper()
执行此操作,无需使用正则表达式。不幸的是,如果你使用Python2.7,这将涉及一些讨厌的编码/解码,我不太熟悉。
x = "HEY thats Some Lower Case ZÄÖÜ"
print([i for i in range(0, len(x)) if x[i].isupper() ])
>[0, 1, 2, 10, 15, 21, 26, 27, 28, 29]