python: SyntaxError: EOL при сканировании строкового литерала

Немного обновлено для ядра asp.net ...

[AttributeUsage(AttributeTargets.Method)]
public sealed class CheckRequiredModelAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var requiredParameters = context.ActionDescriptor.Parameters.Where(
            p => ((ControllerParameterDescriptor)p).ParameterInfo.GetCustomAttribute<RequiredModelAttribute>() != null).Select(p => p.Name);

        foreach (var argument in context.ActionArguments.Where(a => requiredParameters.Contains(a.Key, StringComparer.Ordinal)))
        {
            if (argument.Value == null)
            {
                context.ModelState.AddModelError(argument.Key, $"The argument '{argument.Key}' cannot be null.");
            }
        }

        if (!context.ModelState.IsValid)
        {
            var errors = context.ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage);
            context.Result = new BadRequestObjectResult(errors);
            return;
        }

        base.OnActionExecuting(context);
    }
}

[AttributeUsage(AttributeTargets.Parameter)]
public sealed class RequiredModelAttribute : Attribute
{
}

services.AddMvc(options =>
{
    options.Filters.Add(typeof(CheckRequiredModelAttribute));
});

public async Task<IActionResult> CreateAsync([FromBody][RequiredModel]RequestModel request, CancellationToken cancellationToken)
{
    //...
}
140
задан Steve 7 April 2019 в 03:24
поделиться

3 ответа

Вы не помещаете " перед концом строки.

Используйте " "" , если хотите:

""" a very long string ...... 
....that can span multiple lines
"""
192
ответ дан 23 November 2019 в 22:59
поделиться

Можно попробовать это:

s = r'long\annoying\path'
0
ответ дан 23 November 2019 в 22:59
поделиться

(Предполагая, что у вас нет / вы не хотите разрывов строк в вашей строке ...)

Какова на самом деле длина этой строки?

Я подозреваю, что существует ограничение на длину строки, считываемой из файла или из командной строки, и поскольку конец строки обрезается, синтаксический анализатор видит что-то вроде s1 = "какая-то очень длинная строка .......... (без окончания " ) и, таким образом, вызывает ошибку синтаксического анализа?

Вы можете разделить длинные строки на части. в несколько строк, экранируя разрывы строк в исходном тексте следующим образом:

s1="some very long string.....\
...\
...."
16
ответ дан 23 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: