我已经在工作表中填充了一些数据,并且我正在尝试使列宽度假设最适合,如下所示。基本上是双击列宽调整分隔符时发生的自动调整。
这是我的最小示例,就我对openpyxl文档的理解而言,它应该有效:
import openpyxl
from typing import NoReturn
def columns_best_fit(ws: openpyxl.worksheet.worksheet.Worksheet) -> NoReturn:
"""
Make all columns best fit
"""
column_letters = tuple(openpyxl.utils.get_column_letter(col_number + 1) for col_number in range(ws.max_column))
for column_letter in column_letters:
dim = openpyxl.worksheet.dimensions.ColumnDimension(ws, index=column_letter, bestFit=True, customWidth=True)
ws.column_dimensions[column_letter] = dim
wb = openpyxl.Workbook()
ws = wb.active
ws.append(("Long Column Header 1", "Even Longer Column Header 2"))
ws.append(("some data", "more data"))
columns_best_fit(ws)
wb.save("column_width_test.xlsx")
Run Code Online (Sandbox Code Playgroud)
然而,当我打开生成的文件时,列只是稍微宽一点,但肯定不是最合适的。
如何$PYTHONPATH在Visual Studio Code中为我的工作区正确设置变量?
背景资料
我已经安装了两个版本的GNURadio:
Linux Mint软件包管理器在以下版本中安装的GNURadio版本3.7.11 /usr/lib/python2.7/dist-packages/gnuradio
由PyBOMBS安装的GNURadio版本3.7.13.4 /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages/gnuradio(我的前缀目录是~/Documents/gr13/default)
只有在运行setup_env.sh脚本(除其他功能外,然后添加/home/tejul/Documents/gr13/default/lib/python2.7/dist-packages到$PYTHONPATH)然后在终端中启动python 之后,我才能使用GNURadio版本的较新版本
tejul@Wacom:~/Documents/gr13/default$ ls
bin etc include lib libexec setup_env.sh share src
tejul@Wacom:~/Documents/gr13/default$ source ./setup_env.sh
tejul@Wacom:~/Documents/gr13/default$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> gr.version()
'3.7.13.4'
>>>
Run Code Online (Sandbox Code Playgroud)
当然,无需修改$ PYTHONPATH python即可导入较旧的GNURadio版本。
我想在VisualStudio Code中为新版本的GNURadio编写,运行和调试python脚本。我一直在尝试了解VSCode 的python解释器,工作区和环境的选择。
据我了解, …
在我的Python脚本的一种数据结构我分析的是一个JSON文件,该文件后json.load(file_handle),是类型<class 'dict'>。到现在为止还挺好。现在对于使用它作为输入参数的函数,我想要解析的 json 的类型提示。我在打字文档中读到,对于dicts 作为参数,我应该使用Mapping[key_type, value_type]:
from typing import Mapping
def foo(json_data: Mapping[str, str]) -> None:
...
Run Code Online (Sandbox Code Playgroud)
我解析的 json 有str-type 键和str-type 值,但通常情况下,它的结构是高度递归的。因此,值更可能是dict带有str键的 a,甚至是dicts 作为值。它是非常嵌套的,直到在最深的层次上,最后一个 dict 终于有了str键和str值。
那么我如何更精确地表示这个数据结构呢?我在想一些事情,沿着这个问题的思路,它可能是:
Union[Mapping[str, str], Mapping[str, Mapping]]
Run Code Online (Sandbox Code Playgroud)
但它似乎只代表一级递归。有没有更好的方法来提示这个?
我正在尝试编写一个将Range作为可选参数的函数.这是这种功能的最小例子:
Function Example(s As String, Optional r As Range) As String
Example = "Test"
End Function
Run Code Online (Sandbox Code Playgroud)
这没关系,可以编译VBA模块.但我很难找到如何为这个可选范围参数设置默认值,例如"B:B".
Function Example(s As String, Optional r As Range **= Range("B:B")**) As String
Example = "Test"
End Function
Run Code Online (Sandbox Code Playgroud)
这不编译.它抛出错误"需要常量表达式".
如何从 pytest 测试模块向正在运行的 pygame 注入事件?
以下是一个 pygame 的最小示例,它在J按下时绘制一个白色矩形并在按下时退出游戏Ctrl-Q。
#!/usr/bin/env python
"""minimal_pygame.py"""
import pygame
def minimal_pygame(testing: bool=False):
pygame.init()
game_window_sf = pygame.display.set_mode(
size=(400, 300),
)
pygame.display.flip()
game_running = True
while game_running:
# Main game loop:
# the following hook to inject events from pytest does not work:
# if testing:
# test_input = (yield)
# pygame.event.post(test_input)
for event in pygame.event.get():
# React to closing the pygame window:
if event.type == pygame.QUIT:
game_running = False
break
# React to …Run Code Online (Sandbox Code Playgroud) 我正在尝试查看是否可以在 Windows Powershell 中为我的 python 脚本使用参数自动完成功能。据称,Powershell 支持参数完成。
这是一个不起作用的最小示例:
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
import argparse
import argcomplete
from argcomplete.completers import EnvironCompleter
def argument_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Minimal app where arcomplete should work")
parser.add_argument("--version", action="store_true", help="print out version").completer = EnvironCompleter
parser.add_argument("--do-this", action="store_true", help="do this").completer = EnvironCompleter
parser.add_argument("--do-that", action="store_true", help="do that").completer = EnvironCompleter
return parser
if __name__ == "__main__":
parser = argument_parser()
argcomplete.autocomplete(parser)
cli_args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
然后在 Powershell 中我尝试:输入python -i minimal -然后按<TAB>,什么也没有发生。我究竟做错了什么?也许我应该提到我没有启用全局自动完成功能。不知何故,当我activate-global-python-argcomplete在 powershell 中运行时,我收到“打开方式...”对话框。
我正在尝试通过pygame.Color从整数元组构造对象来修改像素的颜色值,但是由于某些原因,我无法执行通常很可能的事情:
import pygame
import numpy
import random
# it is possible to create a pygame.Color from a tuple of values:
random_values = tuple((random.randint(0, 255) for _ in range(4)))
color = pygame.Color(*random_values)
print(f"successfully created pygame.Color: {color}")
# now for some real application. A certain pixel has this color:
pixel_color = pygame.Color(2795939583) # (166, 166, 166, 0)
print(f"pixel color: {pixel_color}")
# planning to change the intensity of the individual color channels R, G, B, A:
intensity = 25
factors = …Run Code Online (Sandbox Code Playgroud) 我试图找出应该如何处理命名列,myTable其中的名称中包含(@)处的广告,例如active @ mail。该代码应该在立即输出窗口中打印列号:
Sub teststring()
Dim s As String
s = ActiveSheet.Range("myTable[active @ mail]").Column
Debug.Print s
End Sub
Run Code Online (Sandbox Code Playgroud)
但是失败了。使用.Range("myTable[active" & Chr(64) "& mail]")也会失败。
与SeismicPortal的websocket连接向我发送有关JSON对象中包含的地震的数据,我将其作为多行字符串获取,例如:
{
"action": "create",
"data": {
"geometry": {
"coordinates": [
-95.12,
16.52,
-52.0
],
"type": "Point"
},
"id": "20180303_0000046",
"properties": {
"auth": "UNM",
"depth": 52.0,
"evtype": "ke",
"flynn_region": "OAXACA, MEXICO",
"lastupdate": "2018-03-03T10:26:00.0Z",
"lat": 16.52,
"lon": -95.12,
"mag": 4.0,
"magtype": "m",
"source_catalog": "EMSC-RTS",
"source_id": "652127",
"time": "2018-03-03T07:09:05.0Z",
"unid": "20180303_0000046"
},
"type": "Feature"
}
}
Run Code Online (Sandbox Code Playgroud)
我想将字符串中的数据转换为python对象.
正如您在JSON数据中看到的那样,有很多嵌套.当我定义类及其嵌入性来构建一个结构的on对象时,它将保存来自JSON的所有数据,我想也许有一些神奇的Python函数jsonStringToObject可以定制一个类,所有子类都需要保存所有的JSON中的数据并创建它的实例.
让我们在变量rawData中有原始的JSON字符串:
rawData = """{"action":"create","data":{"geometry": {"type": "Point","coordinates": [... """
Run Code Online (Sandbox Code Playgroud)
现在我必须这样做:
>>> import json
>>> quake = json.loads(rawData)
>>> quake['data']['properties']['flynn_region']
"OXACA_MEXICO"
Run Code Online (Sandbox Code Playgroud)
但语法是用括号和撇号填充的.
我希望我可以像这样访问数据: …
python ×6
excel ×2
json ×2
pygame ×2
vba ×2
dictionary ×1
excel-vba ×1
gnuradio ×1
numpy ×1
openpyxl ×1
parsing ×1
powershell ×1
pytest ×1
python-3.x ×1
pythonpath ×1
string ×1
type-hinting ×1