小编pee*_*eer的帖子

Python 3中的嵌套映射

我想将我的列表list = [" a , 1 ", " b , 2 "]转换为嵌套列表[["a","1"],["b","2"]].

以下作品:

f1_a = map(lambda x :[t.strip() for t in x.split(',',1)],list)
Run Code Online (Sandbox Code Playgroud)

但这不适用于Python 3(它适用于Python 2.7!):

f1_b = map(lambda x :map(lambda t:t.strip(),x.split(',',1)),list)
Run Code Online (Sandbox Code Playgroud)

这是为什么?

有没有更简洁的方法f1_4来实现我想要的?

python lambda python-3.x

4
推荐指数
1
解决办法
3630
查看次数

如何在 springdoc 中注释 requestBody 的各个元素?

我有一个 spring(启动)服务器,想要使用 springdoc 从注释生成 OpenAPI 规范。

我有一个请求,请求正文中有两个参数。我希望第一个是必需的,第二个是可选的。

@RequestBody(required = {true|false})似乎只将主体中的所有参数设置为(不需要)。@Parameter另一方面,Javadoc说要使用io.swagger.v3.oas.annotations.parameters.RequestBody

这是我的代码,我希望生成一个规范,其中第一个参数是必需的,第二个参数是可选的:

@GetMapping("/fstVector")
public ResponseEntity<Vector> fstV(@RequestBody final Vector v1, @RequestBody(required = false) final Vector v2) {
    return new ResponseEntity<>(v1, HttpStatus.OK);
}

@PostMapping("/fstVector")
public ResponseEntity<Vector> fstVPost(@RequestBody(required = true) final Vector v1, @RequestBody(required = false) final Vector v2) {
    return new ResponseEntity<>(v1, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

然而,生成的规范需要两个参数:

  /pond/fstVector:
    get:
      tags:
      - circle-escape-controller
      operationId: fstV
      parameters:
      - name: v1
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/Vector'
      - name: v2
        in: query
        required: …
Run Code Online (Sandbox Code Playgroud)

spring-boot openapi springdoc springdoc-openapi-ui

4
推荐指数
1
解决办法
1万
查看次数

如何将englishPCFG.ser.gz作为单个文件获取

我很愚蠢地stanford-parser.jar进入我的构建路径.有没有办法单独获取所需的模型文件englishPCFG.ser.gz,然后到LexicalizedParser.loadModel("/absolute/path/englishPCFG.ser.gz");

stanford-nlp

3
推荐指数
1
解决办法
3268
查看次数

为什么 ap 在 Applicative 中可用?

我正在尝试为 Snap 实现 MonadUnliftIO 并分析 Snap 类。我发现 ap 用于实现 Applicative,而 ap 需要 Monad,Monad 需要 Applicative。它看起来像一个循环。

我认为直到现在不可能写出这样的东西。这种把戏的极限是什么?


class Functor f => Applicative f where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b

class Applicative m => Monad m where
  return :: a -> m a
 
instance Applicative Snap where
  pure x = ...
  (<*>) = ap

ap :: Monad m => m (a -> b) -> m a -> m b

Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
89
查看次数

如何在本地脚本中从 boto3 获取调试日志?

我有一个列出存储桶的本地脚本:

import boto3
s3_client = boto3.client('s3')

for bucket in s3_client.list_buckets()["Buckets"]:
    print(bucket['Name'])
Run Code Online (Sandbox Code Playgroud)

当我在本地执行它时,它就是这样做的。现在,如果我在 AWS 上以 lambda 形式执行此代码并将日志级别设置为DEBUG,如下所示:

import boto3
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

s3_client = boto3.client('s3', endpoint_url="http://localhost:4566")

def lambda_handler(event, context):
    s3_client.list_buckets()
    return { "statusCode": 200 }
Run Code Online (Sandbox Code Playgroud)

我获得了详细的日志,例如发送到 S3 的 HTTP 请求的标头。

但如果我将这些谎言添加到我的本地脚本中,则不会发生任何变化。我试过了:

import boto3
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

s3_client = boto3.client('s3')

for bucket in s3_client.list_buckets()["Buckets"]:
    print(bucket['Name'])
Run Code Online (Sandbox Code Playgroud)

import boto3
import logging

logging.getLogger('boto3').setLevel(logging.DEBUG)
logging.getLogger('botocore').setLevel(logging.DEBUG)
logging.getLogger('s3transfer').setLevel(logging.DEBUG)

s3_client = boto3.client('s3')

for bucket in s3_client.list_buckets()["Buckets"]:
    print(bucket['Name'])
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的,在这两种情况下我都没有收到日志。我怎样才能让我的本地脚本显示 …

python logging amazon-s3 boto3 aws-lambda

3
推荐指数
1
解决办法
4032
查看次数

如何用匹配数计算

我有一个文件,其中每一行以整数开头,我想从每个数字中减去2,以便例如

2 foo
2 bar
3 foo
3 bar
Run Code Online (Sandbox Code Playgroud)

0 foo
0 bar
1 foo
1 bar
Run Code Online (Sandbox Code Playgroud)

我试过了

perl -pe 's/^(\d+)/($1 - 2)/g' file   #-> '(2 - 2) foo'...
perl -pe 's/^(\d+)/add($1, -2)/g' file #-> 'add(2, -2) foo'...
Run Code Online (Sandbox Code Playgroud)

两者都不适合我.我已经读过Perl会根据我使用它们的上下文将字符串解释为数字,但我似乎无法明确表达我的意图.

perl

2
推荐指数
1
解决办法
49
查看次数

如何使线像圆一样粗?

我想制作一条宽度等于圆直径的圆形线.经过多次试验和错误后,这似乎产生了想要的输出.

import Diagrams.Prelude
import Diagrams.Backend.Cairo.CmdLine
main = mainWith example

path = fromVertices [p2 (0,0), p2 (3,0)] # lw 80

example :: Diagram B
example = atPoints [p2 (0,0)] n
  <> (path # lineCap LineCapRound  . lineJoin LineJoinRound)
  <> atPoints [p2 (3,0)] n
  <> square 10 # lw none # fc white
 where
   n =[circle 1 # fc green # lw none]
Run Code Online (Sandbox Code Playgroud)

但感觉不对.我希望lw 2对应circle 1因为2是半径的两倍,但肯定不是lw 80?!
为什么它适用于80?假设我错过了一些东西,怎么做一个像圆一样宽的圆形线?

haskell haskell-diagrams

2
推荐指数
1
解决办法
82
查看次数

如何在 ggplot2 中将 difftime 格式化为 hh:mm?

我想用 ggplot2 显示 difftime 数据,并且我希望刻度格式为hh:mm.

library(ggplot2)  

a= as.difftime(c("0:01", "4:00"), "%H:%M", unit="mins")
b= as.difftime(c('0:01', "2:47"), "%H:%M", unit="mins")

ggplot(data=NULL, aes(x=b, y=a)) + geom_point(shape=1) +    
                  scale_x_time(labels = date_format("%H:%M"), 
                               breaks = "1 hour")
Run Code Online (Sandbox Code Playgroud)

但我收到以下警告:

Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.
Warning message:
In structure(as.numeric(x), names = names(x)) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

这是一个图表: 在此处输入图片说明

更新: 我的例子太小了,我还需要能够显示负差异,所以这将是更好的数据:

a= as.difftime(c(-60, -4*60),  unit="mins")
b= as.difftime(c(-60, 2*60+47), unit="mins")
ggplot(data=NULL, aes(x=b, y=a)) + geom_point(shape=1)
Run Code Online (Sandbox Code Playgroud)

r ggplot2 difftime

2
推荐指数
1
解决办法
1298
查看次数

java.lang.IllegalStateException:您可以在 POST 中发送表单参数或正文内容,但不能同时发送两者

我对发布请求感到很陌生,但我遇到了以下错误

java.lang.IllegalStateException:您可以在 POST 中发送表单参数或正文内容,但不能同时发送两者!

这是我的测试

public void createModel() {
                        
        JSONObject obj2 = new JSONObject();
        obj2.put("name", "hello1234");
        List<JSONObject> list1 = new ArrayList<JSONObject>();
        list1.add(obj2);
        System.out.println(" i am list 1   " + list1);
        JSONObject obj = new JSONObject();
        obj.put("modes", list1);
        System.out.println("i am a object \n" + obj.toString());
        System.out.println("testtest " + obj);
        
        Response response = httpRequest.auth().preemptive().basic("test", "test")
                .given().contentType("application/json").body(obj.toString()).when().post("/modes").then().using()
                .extract().response();
        int statusCode = response.getStatusCode();
        System.out.println(statusCode + " this is post");           
        System.out.println("This is body" + response.getBody().prettyPrint());
        
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用 RestAssured 3.0.2 依赖项它确实工作正常,突然出现错误,任何帮助将不胜感激

java rest-assured

2
推荐指数
1
解决办法
3074
查看次数

如何在 Kotlin 中使用 Junit 5 的 TempDir?

我想将以下(工作)java 测试转换为 Kotlin:

package my.project;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

import static java.util.Collections.singletonList;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class MyTempFileTest {

    @TempDir
    public File tempFolder;

    @Test
    public void testTempFolder() {
        Assertions.assertNotNull(tempFolder);
    }

    @Test
    public void testTempFolderParam(@TempDir File tempFolder) {
        Assertions.assertNotNull(tempFolder);
    }
 }
Run Code Online (Sandbox Code Playgroud)

使用 IntelliJ 的内置转换器,它变成:

package my.project

import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.io.TempDir
import java.io.File

class MyTempFileTest {
    @TempDir
    var tempFolder: File? = null
    
    @Test
    fun testTempFolder() {
        Assertions.assertNotNull(tempFolder)
    }

    @Test
    fun …
Run Code Online (Sandbox Code Playgroud)

tempdir temporary-files kotlin junit5

2
推荐指数
2
解决办法
1890
查看次数