在这个答案/sf/answers/1937657011/中,提供了以下构造
a=[1,2]
while True:
if IndexError:
print ("Stopped.")
break
print(a[2])
Run Code Online (Sandbox Code Playgroud)
实际上打印"已停止".和破坏(用Python 3.4.1测试).
为什么?!为什么if IndexError甚至合法?为什么a[2]不会引发IndexError不带try ... except身边?
我正在寻找一种解包二进制数据的方法.数据由C头文件中的整个结构树(最多四层深,总结构大小几乎为64k)描述.
对于这个问题:在Python中解压缩嵌套的C结构,唯一的答案是将整个数据描述"压扁"成一个字符串,但我不愿意这样做,因为它不可维护.
我喜欢的是读取头文件然后神奇地创建一个获取二进制数据并返回包含所有数据的(正确嵌套的)字典的函数.
是否有任何Python模块可以完成此任务,或者它的某些部分?
或者还有其他方法可以在Python中处理这些数据吗?
请考虑以下代码:
>>> class A(object):
... def __init__(self, a):
... self.a = a
... def __eq__(self, other):
... return self.a==other.a
...
>>> a=A(1)
>>> b=A(1)
>>> c=A(2)
>>> a==b
True # because __eq__ says so
>>> a==c
False # because __eq__ says so
>>> a is b
False # because they're different objects
>>> l = [b,c]
>>> a in l
True # seems to use __eq__ under the hood
Run Code Online (Sandbox Code Playgroud)
因此,in似乎用于__eq__确定某个容器中是否有东西.
in使用对象标识,即a in …我需要使用正则表达式过滤大量数据。数据由如下所示的字符串组成:
60166213
60173866-4533
60167323-9439-1259801
NL170-2683-1262201
60174710-1-A12-4
Run Code Online (Sandbox Code Playgroud)
当我需要它们看起来像这样时:
60166213
60173866-4533
60167323-9439
NL170-2683
60174710-1
Run Code Online (Sandbox Code Playgroud)
如何过滤正则表达式以删除第二个破折号之后的所有内容。破折号的数量各不相同,我需要按原样保留不包含多个破折号的所有字符串。
我试图转换列表的小写列表的元素.这就是看起来像.
print(dataset)
[['It', 'went', 'Through', 'my', 'shirt', 'And', 'came', 'out', 'The', 'back', 'and', 'hit', 'the', 'kid', 'behind', 'me', 'in', 'the', 'toe']]
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
for line in dataset:
rt=[w.lower() for w in line]
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个错误,说列表对象没有属性lower().
我有一个出现字符"^ M"的文件.我想删除所有这些出现.
为此,我尝试使用以下代码 -
re.sub('^M', '', line)
Run Code Online (Sandbox Code Playgroud)
即使多次尝试,我也无法删除它.
任何人都可以告诉我,我正在做什么,并提出一些建议