什么是字符串中的%3等价的%s?

时间:2014-09-25 02:10:57

标签: python-2.7 python-3.x equivalent

我之前在python中取得了一些基本的进步,只不过命令陆地代数计算器做数学作业,使用用户定义的函数,输入和基本的东西。我已经采用了codeacademy所拥有的Python 2课程,而且我发现PY3没有使用%和%s。

我已经将其缩小到与格式()有一些关系,但这就是我在谷歌上找到的。

作为初学者,我真的很感激如何将其转化为Python 3:

str1 = "Bob,"
str2 = "Marcey."
print "Hello %s hello %s" % (str1, str2)
编辑:另外,我知道print(“Hello”+ str1 +“hello”+ str2)可以正常工作。

5 个答案:

答案 0 :(得分:3)

str.__mod__()继续在3.x中工作,但str.format()中描述了使用PEP 3101执行字符串格式设置的新方法,并随后被移植到最新版本的2。 X

print("Hello %s hello %s" % (str1, str2))

print("Hello {} hello {}".format(str1, str2))

答案 1 :(得分:3)

这应该按预期工作:

str1 = "Bob," str2 = "Marcey." print("Hello {0} hello {1}".format(str1, str2))

虽然使用%来格式化Python 3中的字符串仍然有效,但建议使用新的string.format()。它更强大,%将在某些时候从语言中删除。

访问Python网站,查看从Python 2.7到Python 3的更改,文档包含您需要的所有内容。

:)

答案 2 :(得分:1)

%运算符与print无关;相反,它是一个字符串运算符。考虑这个有效的Python 2.x代码:

x = "%s %s" % (a, b)
print x

几乎相同的代码在Python 3中起作用:

x = "%s %s" % (a, b)
print(x)

您的尝试将被正确写为

print("%s %s" % (a, b))

%运算符类似于C函数sprintf,而不是printf

答案 3 :(得分:0)

您正在使用的方法在Python 3中仍然可用(str。 mod ())。 除此之外,您还可以在Python中使用字符串格式。 例如:

#include "Window.h"

Window::Window() {
    width = 800;
    height = 600;
}

Window::Window(GLint width, GLint height) {
    width = width;
    height = height;
}

int Window::Initialise() {
    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
        printf("SDL initialisation failed\n");
        SDL_Quit();
        return 1;
    }

    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);

    mainWindow = SDL_CreateWindow("Test game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
    if (!mainWindow) {
        printf("SDL window creation failed!\n");
        SDL_Quit();
        return 1;
    }

    //Set context for GLEW to use
    SDL_GLContext context = SDL_GL_CreateContext(mainWindow);

    //Allow modern extension features
    glewExperimental = GL_TRUE;

    if (glewInit() != GLEW_OK) {
        printf("GLEW initialization failed!\n");
        SDL_DestroyWindow(mainWindow);
        SDL_Quit();
        return 1;
    }

    glEnable(GL_DEPTH_TEST);

    //Setup viewport size
    glViewport(0, 0, 800, 600);
}

Window::~Window() {
    SDL_DestroyWindow(mainWindow);
    SDL_Quit();
}

print("This is {}".format("sparta"))    #gives output
"This is sparta"

答案 4 :(得分:0)

在Python 3中使用f字符串

使用fF为要在行内求值的变量和表达式在字符串内的花括号之间插入前缀str1 = "John Cleese" str2 = "Michael Palin" age1 = 73 age2 = 78 print(f"Hello {str1}, hello {str2}, your ages add to {age1 + age2}.")

print()

请注意.format()中的Python3括号。显然,字符串插值比Python 2的@override Widget build(BuildContext context){ //here is the reason of losing focus. final GlobalKey<FormState> _formKey = new GlobalKey<FormState>() } 语法要快。