我最近偶然发现了Python在不同复合语句中处理else子句的方式似乎不一致.由于Python设计得很好,我确信有一个很好的解释,但我想不到它.
考虑以下:
if condition:
do_something()
else:
do_something_else()
Run Code Online (Sandbox Code Playgroud)
这里do_something_else()只有if condition是假的才会执行.
同样地,在
try:
do_something()
except someException:
pass:
else:
do_something_else()
finally:
cleanup()
Run Code Online (Sandbox Code Playgroud)
do_something_else() 仅在未发生异常时执行.
但是在for或while循环中,总是执行else子句,无论是否for/while block已经执行了内容.
for i in some_iterator:
print(i)
else:
print("Iterator is empty!")
Run Code Online (Sandbox Code Playgroud)
将永远打印"Iterator is empty!",无论我是说some_iterator = []还是some_iterator = [1,2,3].while-else子句中的行为相同.在我看来,在这些情况下else表现得更像finally.我在俯瞰什么?
我正在尝试使用minidom在我的XML文档中包含对DTD的引用.
我正在创建文档,如:
doc = Document()
foo = doc.createElement('foo')
doc.appendChild(foo)
doc.toxml()
Run Code Online (Sandbox Code Playgroud)
这给了我:
<?xml version="1.0" ?>
<foo/>
Run Code Online (Sandbox Code Playgroud)
我需要得到类似的东西:
<?xml version="1.0" ?>
<!DOCTYPE something SYSTEM "http://www.path.to.my.dtd.com/my.dtd">
<foo/>
Run Code Online (Sandbox Code Playgroud) 正如我刚从这个问题中学到的,.NET正则表达式可以访问重复捕获组中的各个匹配项.
例如,如果我将一个正则表达式应用于\b(\w+\s*)+一串单词,只会将最后一个单词存储在\1或中Match.Groups(1).Value,但是使用Match.Groups(1).Captures我可以访问正则表达式迭代的所有单个匹配项.
除了.NET之外,是否有其他正则表达式支持这种风格?
我有一个函数可以修复那些坚持让一切都变得更好的顽皮用户的资本化!
我希望只在字符串包含3个或更多大写字母的大写单词时才调用我的函数.
这可以用正则表达式完成吗?
例子:例如:I = false,DEAL = true,Welcome = false
请告诉我如何在HTML中放置多个空格?
对于一个空间,我们写 ,所以对于5个空格,我们必须写 五次......
还有其他方法吗?或任何标签?
我想做以下事情:
print "CC =",CC
Run Code Online (Sandbox Code Playgroud)
但作为一个函数,我只需要写一次变量CC.我无法弄清楚如何在函数中执行此操作,因为它总是将CC计算为浮点数(它是)....有没有办法接受函数的输入作为字符串和浮点数?
我试过这个:
def printme(a):
b='%s' % a
print b
return b
Run Code Online (Sandbox Code Playgroud)
但当然它只打印了a它的名称,而不是它的名字.
我需要一些帮助来替换字符串中的所有非单词字符.
作为一个例子(stadtbezirkspräsident'应该成为stadtbezirkspräsident.
这个正则表达式应该适用于所有语言,所以它有点棘手,因为我不知道如何匹配像ñ或的字符œ.我尝试解决这个问题
string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' ');
Run Code Online (Sandbox Code Playgroud)
但仍然是许多特殊人物,Ø如左.
也许有一个通用的选择器,或者任何人之前已经解决了这个问题?
我一直在努力应对这些艰难的事情.我记得一位讲师告诉我们所有人,如果你有一个问题需要你使用正则表达式解决它,你实际上现在有两个问题.
嗯,我当然同意这一点.正则表达式是我们不经常使用的东西,但是当我们这样做时,就像阅读一些外来语言一样(对我而言)...我想我会决定拿到这本书并进一步阅读.
我面临的挑战是,我需要根据以下标准验证用户名:
.)和下划线(_)__ ..不允许但._._有效.到目前为止,我有以下内容:^[a-zA-Z_.]{0,20}$但当然它允许重复下划线和句号.
现在,我可能做错了,从有效字符集和最大长度开始.我一直在尝试(不成功)创建一些环视或后视或其他任何搜索无效的句点重复(.)和下划线(_)不确定将此要求分解为正则表达式解决方案的方法或方法是什么.
任何人都可以协助推荐/替代方法或指出我正确的方向吗?
我有一本字典(例如英语 - 克罗地亚语).它可能包含句子和短语.我正在将表单文件"english text" = "english text"转换为表单"english text" = "croatian text"并使用python regex模块来执行此操作.我正在使用的正则表达式看起来像这样(给定变量原始,这是英文文本应该翻译:
regexString = '(?<= = ")'+original+'(?=")'
Run Code Online (Sandbox Code Playgroud)
这样我就可以准确地捕获右侧引号内的英文文本,并用克罗地亚语替换它.但是,如果原始文本包含内部括号,则会出现此问题.例如:
original = 'This is a wonderland :)'
Run Code Online (Sandbox Code Playgroud)
在这种情况下,引发错误"不平衡的括号".如果原始版本是硬编码的,我可以通过放置来解决问题
original = 'This is a wonderland :\\)'
Run Code Online (Sandbox Code Playgroud)
但是,整个文件中都有*原始*变量.
除了通过在反斜杠前面的所有括号中更改原始变量之外,有没有解决这个问题的方法?
我是Python的新手,我仍然很难将语言本身用于我的程序.这是我到目前为止所拥有的:
# Purpose: 'twolists' = takes 2 lists, & returns a new list containing
# alternating elements of lists.
# Return = final_list
# Parameter = list1, list2
def twolists(list1, list2): # don't forget to return final_list
alt_list = []
a1 = len(list1)
a2 = len(list2)
for i in range(# ? ):
# append one thing from list1 to alt_list - How?
# append one thing from list2 to alt_list - How?
Run Code Online (Sandbox Code Playgroud)
现在该程序应该产生如下输出:
outcome = twolists([ ], ['w', 'x', 'y', …Run Code Online (Sandbox Code Playgroud) python ×5
regex ×5
capture ×1
character ×1
dtd ×1
flow-control ×1
html ×1
javascript ×1
match ×1
minidom ×1
parentheses ×1
php ×1
string ×1
xml ×1