我想要的是非常简单,可以PHP使用一行代码在语言中完成:
file_put_contents('target.txt', iconv('windows-1252', 'utf-8', file_get_contents('source.txt')));
Run Code Online (Sandbox Code Playgroud)
在Python中,我花了一整天时间试图弄清楚如何实现同样的琐碎事情,但无济于事.当我尝试读取或写入文件时,我经常得到UnicodeDecode errors,str has no method decode以及十几个类似的错误.好像我在SO扫描所有线程,但仍然不知道我该怎么做.
这是日期所需的表示形式:
>>> tz = pytz.timezone('US/Central')
>>> datefmt = '%Y-%m-%d %H:%M:%S.%f%z(%Z)'
>>> datetime.now(tz).strftime(datefmt)
'2017-04-27 15:09:59.606921-0500(CDT)'
Run Code Online (Sandbox Code Playgroud)
这是它的记录方式(Linux 上的 Python 3.6.0):
>>> logrecord_format = '%(asctime)s %(levelname)s %(message)s'
>>> logging.basicConfig(format=logrecord_format, datefmt=datefmt)
>>> logging.error('ruh-roh!')
2017-04-27 15:10:35.%f-0500(CDT) ERROR ruh-roh!
Run Code Online (Sandbox Code Playgroud)
它没有正确填充微秒。我已经尝试将 更改为logrecord_format其他一些东西,但我无法弄清楚 - 如何配置记录器以正确的方式显示微秒和时区以strftime完全匹配输出?
编辑: 我可以用偏移量解决毫秒,即2017-04-27 15:09:59,606-0500(CDT)。那可能吗? logging提供%(msecs)03d指令,但我似乎无法让时区偏移出现在毫秒之后。
我需要从类似的东西解析聊天机器人字符串
myproject appliances lasthour
Run Code Online (Sandbox Code Playgroud)
至
("myproject", "appliances", "lasthour")
Run Code Online (Sandbox Code Playgroud)
或者也
myproject appliances "2017-4-13 10:00" "2017-4-13 12:00"
Run Code Online (Sandbox Code Playgroud)
至
("myproject", "appliances", "2017-4-13 10:00", "2017-4-13 12:00")
Run Code Online (Sandbox Code Playgroud)
问题是引用字符串中的空格.我可以手工完成它,但它是一个更简单,更易维护的1行解决方案,用引号字符串中的空格解析命令行args?
setattr将设置不能与常规属性访问一起使用的名称,即obj.name.
>>> from types import SimpleNamespace
>>> my_instance = SimpleNamespace()
>>> setattr(my_instance, 'from', 0) # works
>>> getattr(my_instance, 'from')
0
>>> my_instance.from
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
如何检查这些名称,以避免使用它们?
在python中添加布尔表达式时,似乎将它们括在括号中会int在添加它们时将它们强制转换,但不这样做会保留它们的类型:
>>> ((0>1) + (0>9))
0
>>> (0>1 + 0>9)
False
>>> (0>1 + (0>9))
False
Run Code Online (Sandbox Code Playgroud)
为什么是这样?在我看来,括号只应该用于改变操作的顺序(除了你使用括号来定义元组的一些情况),而不是内容的类型,所以我希望:
(<expression>) == <expression>
Run Code Online (Sandbox Code Playgroud) 我有这样的字典:
{
1: {
3: {
1: {c:32},
2: {c:12}
},
4: {c: 66}
},
2: {
3: {c: 1},
5: {c: 2}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能优雅地展开这棵树来获得:
[
[1, 3, 1, 32],
[1, 3, 2, 12],
[1, 4, 66],
[2, 3, 1],
[2, 5, 2]
]
Run Code Online (Sandbox Code Playgroud)
这种结构可以任意深入.
编辑 - 我不关心输出的顺序.'c'是看到特定整数序列的次数.所以在这种情况下,[1,3,1]被看到32次.
确切的格式并不那么重要,这是我追求的技术.
我想编写一个从深层嵌套元组和列表中提取元素的函数,比方说我有这样的东西
l = ('THIS', [('THAT', ['a', 'b']), 'c', ('THAT', ['d', 'e', 'f'])])
Run Code Online (Sandbox Code Playgroud)
我想要一个没有'THIS'和'THAT'的平面列表:
list = ['a', 'b', 'c', 'd', 'e', 'f']
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
def extract(List):
global terms
terms = []
for i in word:
if type(i) is not str:
extract(i)
else:
if i is not "THIS" and i is not "THAT":
terms.append(i)
return terms
Run Code Online (Sandbox Code Playgroud)
但我一直在接受list = ['d', 'e', 'f'],看起来terms = []循环后再次设置'c'.
以此代码为例:
class SomeClass():
def a_method(self):
pass
print(SomeClass.a_method is SomeClass.a_method) # Example 1: False
print(SomeClass.a_method == SomeClass.a_method) # Example 2: True
print(SomeClass().a_method is SomeClass().a_method) # Example 3: False
print(SomeClass().a_method == SomeClass().a_method) # Example 4: False
Run Code Online (Sandbox Code Playgroud)
我创建了一个函数,可以将嵌套列表展平为普通列表。
outputarray = []
def flattenarray(x):
for elmt in x:
if isinstance(elmt, float) or isinstance(elmt, int):
outputarray.append(elmt)
elif isinstance(elmt, list):
flattenarray(elmt)
return outputarray
Run Code Online (Sandbox Code Playgroud)
以上工作完美,但我试图在函数内部使用“outputarray”变量,但是当我这样做时,递归步骤会将 outputarray 列表覆盖回一个空列表。
我怎样才能使这项工作在函数内指定一个列表,同时能够在递归过程中附加到它而不覆盖它?
我有一个图像数据,主要如下所示:
array('B', [255,216,255...])
Run Code Online (Sandbox Code Playgroud)
它属于类型array.array('B')
由于该数据要通过通信通道发送,因此有必要将该数据转换为类型:bytearray。
我将数据转换为字节数组:
data1 = bytearray(CompressedImage.data)
Run Code Online (Sandbox Code Playgroud)
但是,我现在需要获取array.array('B')数据的原始形式。
到目前为止,我找到了byte()函数decode(),但仍然无法反序列化原始数据形式。

python ×10
python-3.x ×6
python-2.7 ×4
list ×2
recursion ×2
arrays ×1
datetime ×1
dictionary ×1
logging ×1
nested ×1
timezone ×1
tree ×1