给出以下代码:
def A() :
b = 1
def B() :
# I can access 'b' from here.
print( b )
# But can i modify 'b' here? 'global' and assignment will not work.
B()
A()
Run Code Online (Sandbox Code Playgroud)
对于B()函数变量中的代码,b在外部作用域中,但不在全局作用域中.是否可以b从B()函数内修改变量?当然我可以从这里读取它print(),但是如何修改呢?
我怎么能把这样的词典列表
[{'a':1}, {'b':2}, {'c':1}, {'d':2}]
Run Code Online (Sandbox Code Playgroud)
进入这样一个单词
{'a':1, 'b':2, 'c':1, 'd':2}
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何从页面自动获取网址.在下面的代码中,我试图获取网页的标题:
import urllib.request
import re
url = "http://www.google.com"
regex = r'<title>(,+?)</title>'
pattern = re.compile(regex)
with urllib.request.urlopen(url) as response:
html = response.read()
title = re.findall(pattern, html)
print(title)
Run Code Online (Sandbox Code Playgroud)
我得到了这个意想不到的错误:
Traceback (most recent call last):
File "path\to\file\Crawler.py", line 11, in <module>
title = re.findall(pattern, html)
File "C:\Python33\lib\re.py", line 201, in findall
return _compile(pattern, flags).findall(string)
TypeError: can't use a string pattern on a bytes-like object
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是我目前如何在Python中将元组列表转换为字典:
l = [('a',1),('b',2)]
h = {}
[h.update({k:v}) for k,v in l]
> [None, None]
h
> {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?似乎应该有一个单行来做这件事.
[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
Run Code Online (Sandbox Code Playgroud)
如何从此列表中的每个元组返回第二个值?
期望的输出:
[2, 3, 5, 4, 7, 7, 8]
Run Code Online (Sandbox Code Playgroud) 我正在尝试在循环内创建函数并将它们存储在字典中.问题是字典中的所有条目似乎最终都映射到最后创建的函数.代码如下:
functions = []
for i in range(3):
def f():
return i
# alternatively: f = lambda: i
functions.append(f)
Run Code Online (Sandbox Code Playgroud)
这输出:
print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
J0000000: Transaction A0001401 started on 8/22/2008 9:49:29 AM
J0000010: Project name: E:\foo.pf
J0000011: Job name: MBiek Direct Mail Test
J0000020: Document 1 - Completed successfully
Run Code Online (Sandbox Code Playgroud)
我有这个巨大的丑陋的字符串,我正在尝试使用正则表达式从中提取片段.
在这种情况下,我想抓住"项目名称"之后的所有内容,直到它说"J0000011:"的部分(每次11将是一个不同的数字).
这是我一直在玩的正则表达式
Project name:\s+(.*)\s+J[0-9]{7}:
Run Code Online (Sandbox Code Playgroud)
问题是它不会停止,直到它碰到J0000020:最后.
如何在第一次出现J [0-9] {7}时使正则表达式停止?
我有一个路径(包括目录和文件名).
我需要测试文件名是否有效,例如,如果文件系统允许我创建具有这样名称的文件.
文件名中包含一些unicode字符.
可以安全地假设路径的目录段是有效且可访问的(我试图使问题更加适用,显然我太过分了).
除非必须,否则我非常不想逃避任何事情.
我发布了一些我正在处理的示例字符,但显然它们会被堆栈交换系统自动删除.无论如何,我想保留标准的unicode实体ö,并且只保留文件名中无效的东西.
这是捕获.可能(或可能不)已经是路径目标的文件.我需要保留该文件(如果它存在),如果不存在则不创建文件.
基本上我想检查是否可以写入路径而不实际打开写入路径(以及通常需要的自动文件创建/文件clobbering).
因此:
try:
open(filename, 'w')
except OSError:
# handle error here
Run Code Online (Sandbox Code Playgroud)
是不可接受的,因为它会覆盖我不想触摸的现有文件(如果它在那里),或者如果不存在则创建所述文件.
我知道我能做到:
if not os.access(filePath, os.W_OK):
try:
open(filePath, 'w').close()
os.unlink(filePath)
except OSError:
# handle error here
Run Code Online (Sandbox Code Playgroud)
但那会创建文件filePath,然后我必须这样做os.unlink.
最后,似乎花了6或7行来做一些应该简单os.isvalidpath(filePath)或类似的事情.
顺便说一下,我需要在(至少)Windows和MacOS上运行,所以我想避免特定于平台的东西.
``
在python中进行一些XML处理.(编辑:我被迫在这个项目中使用Python 2.4,嘘!)我想知道什么是Pythonic最常用的方法(在多个列表中创建所有值的联合):
lists = [[1,4,3,2,4], [4,5]]
Run Code Online (Sandbox Code Playgroud) python ×9
list ×3
tuples ×2
dictionary ×1
filepath ×1
filesystems ×1
function ×1
modulo ×1
python-2.7 ×1
python-3.x ×1
regex ×1
set-union ×1
web-crawler ×1