相关疑难解决方法(0)

打破一行python到多行?

在C++中,我喜欢分解我的代码行,如果它们太长,或者if if语句,如果它有很多检查.

if (x == 10 && y < 20 && name == "hi" && obj1 != null) 
    // Do things 

// vs

if (x == 10
    && y < 20
    && name == "hi"
    && obj1 != null)
{
    // Do things
}

AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, mAppliedEffects[inEffectIDHash], inTagNameHash);
// vs
AddAndSpawnParticleSystem(inParticleEffectName, inEffectIDHash, overrideParticleSystems, 
    mAppliedEffects[inEffectIDHash], inTagNameHash);
Run Code Online (Sandbox Code Playgroud)

在Python中,代码块由选项卡定义,而不是由";"定义.在行尾

if number > 5 and number < 15:
    print "1"
Run Code Online (Sandbox Code Playgroud)

python中是否可以使用多行?喜欢...

if number > 5 
and number < 15:
    print "1"
Run Code Online (Sandbox Code Playgroud)

我不认为这是可能的,但它会很酷!

python syntax

12
推荐指数
2
解决办法
6万
查看次数

如何在多行if语句中注释每个条件?

我想要一个多行if语句,例如:

if CONDITION1 or\
   CONDITION2 or\
   CONDITION3:
Run Code Online (Sandbox Code Playgroud)

我想评论每行源代码的结尾

if CONDITION1 or\ #condition1 is really cool
   CONDITION2 or\ #be careful of condition2!
   CONDITION3:    #see document A sec. B for info
Run Code Online (Sandbox Code Playgroud)

我被禁止这样做,因为python将它全部视为一行代码和报告SyntaxError: unexpected character after line continuation character.

我应该如何实施和记录冗长的多行if语句?

python conditional comments multiline python-3.x

12
推荐指数
1
解决办法
2196
查看次数

将长函数调用放在多行上的正确方法

我有很长的功能,如下所示:

hash_correct = hashlib.md5(salt + password)).digest().encode("base64")
Run Code Online (Sandbox Code Playgroud)

我想将它分成两行,但我不确定在Python中执行此操作的正确方法?

谢谢.

python multiline

11
推荐指数
1
解决办法
7481
查看次数

继续行中的注释

假设我有一个多行命令:

if 2>1 \
 and 3>2:
    print True
Run Code Online (Sandbox Code Playgroud)

在一个if块中,我可以通过使用括号来包装行来在其中一个条件旁边添加注释:

if (2>1 #my comment
 and 3>2):
    print True
Run Code Online (Sandbox Code Playgroud)

事实上,它与PEP 8指南的推荐方式一致:

包装长行的首选方法是在括号,括号和括号内使用Python隐含的行继续.通过将表达式包装在括号中,可以在多行中分割长行.这些应该优先使用反斜杠来继续行.

但是,有时您需要使用continuation.例如,long,多个with语句不能使用隐式延续.那么,如何在特定行旁边添加注释?这不起作用:

with open('a') as f1, #my comment\
 open('b') as f2:
    print True
Run Code Online (Sandbox Code Playgroud)

更一般地说,是否有一种在特定延续线旁边添加注释的通用方法?

python continuation

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

为什么缩进显式行继续不允许Python中的注释?

我正在编写一个Python解析器来学习Flex和Bison,我试图找出为什么只有这些程序中的第一个是有效的Python.

a.py:

\
# This is valid Python
Run Code Online (Sandbox Code Playgroud)

没有产生错误.

b.py:

    \
# This is not valid Python
Run Code Online (Sandbox Code Playgroud)

产生此错误:

  File "b.py", line 1
    \
    ^
IndentationError: unexpected indent
Run Code Online (Sandbox Code Playgroud)

并且c.py:

if True:
    pass
    \
    # This is not valid Python
Run Code Online (Sandbox Code Playgroud)

产生此错误:

  File "c.py", line 4
    # This is not valid Python
                             ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我在linux2(Ubuntu 10.04)上使用Python 2.6.5(r265:79063,2010年4月16日,13:09:56)[GCC 4.4.3]; 但是,在ideone.com上进行测试表明Python 3上的行为是相同的.

python

10
推荐指数
1
解决办法
327
查看次数

如何在Python中将表示为字符的数字转换为数字

我的数据框中有一个列,其值为'3.456B',实际上代表了3.456亿(和Million相似的表示法).如何将此字符串形式转换为正确的数字表示?

这显示了数据框:

import pandas as pd
data_csv = pd.read_csv('https://biz.yahoo.com/p/csv/422conameu.csv')
data_csv
Run Code Online (Sandbox Code Playgroud)

这是一个示例值:

data_csv['Market Cap'][0]
type(data_csv['Market Cap'][0])
Run Code Online (Sandbox Code Playgroud)

我试过这个:

data_csv.loc[data_csv['Market Cap'].str.contains('B'), 'Market Cap'] = data_csv['Market Cap'].str.replace('B', '').astype(float).fillna(0.0)
data_csv
Run Code Online (Sandbox Code Playgroud)

但不幸的是,最后还有值为'M'的值,表示百万.它返回错误如下:

ValueError: invalid literal for float(): 6.46M
Run Code Online (Sandbox Code Playgroud)

如何在此列中用适当的值替换B和M?有没有更好的方法呢?

python replace pandas

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

Python:如何使用长正则表达式进行行继续?

我有一个很长的正则表达式,我想继续到下一行,但我尝试的一切给了我一个EOL或打破正则表达式.我已经在括号内继续了一行,并阅读了这一点,除此之外,我如何在Python中进行换行(换行)?

工作,但仍然太长:

REGEX = re.compile(
            r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')
Run Code Online (Sandbox Code Playgroud)

错误:

REGEX = re.compile(
            r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\)[A-Z0-9]+
            )\s+([a-zA-Z\d-]+)')

SyntaxError: EOL while scanning string literal


REGEX = re.compile(
            r'\d\s+\d+\s+([A-Z0-9-]+)\s+([0-9]+.\d\(\d\
                )[A-Z0-9]+)\s+([a-zA-Z\d-]+)')

sre_constants.error: unbalanced parenthesis


REGEX = re.compile(
            r'\d\s+\d+\s+([A-Z0-9-]+)\s+( \
            [0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)')

regex no longer works


REGEX = (re.compile(
            r'\d\s+\d+\s+([A-Z0-9-]+)\s+(
            [0-9]+.\d\(\d\)[A-Z0-9]+)\s+([a-zA-Z\d-]+)'))

SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

我已经能够缩短我的正则表达式,所以这不再是一个问题,但我现在有兴趣知道如何使用长正则表达式进行行继续?

python regex

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

断言中PEP8打破长字符串

我有这行代码:

assert 0 <= j <= self.n, "First edge needs to be between 0 and {}".format(self.n)
Run Code Online (Sandbox Code Playgroud)

我希望pep8很开心,但我不明白如何打破这条线.我试着用逗号破解并得到无效的语法.我已经尝试用额外的"" 来打破字符串,如何打破PEP8合规性的长串线?.PEP8很高兴,但断言只产生了消息的前半部分.

打破长断言字符串的正确方法是什么?

python

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

Pythonic分裂数学计算的方法

我使用ninja-ide,我发现它可以抱怨所有事情的惊人方式(到处都是黄色的底线)因为我觉得它是一种改进我的编码以使其更加标准的方法.

然而,因为它也抱怨代码行的长度(这当然很有意义,因为没有人喜欢水平滚动来阅读代码),我一直坚持这个问题.

让我们说这句话:

 v1, v2 = np.sum(((b1 - m1) ** 2) * p1) / q1, np.sum(((b2 - m2) ** 2) * p2) / q2
Run Code Online (Sandbox Code Playgroud)

它有81个字符,包括空格,在这种情况下,我可以像这样拆分它:

    v1 = np.sum(((b1 - m1) ** 2) * p1) / q1
    v2 = np.sum(((b2 - m2) ** 2) * p2) / q2
Run Code Online (Sandbox Code Playgroud)

但这并没有太多的pythonic,还有另一个问题:

如果没有逗号怎么办?我的意思是我怎么能分开这样的东西:

   v2 = np.sum(((b1 - m1) ** 2 * np.sum(((b2 - np.sum(((b2 - m2) ** 2) * p2) / q2) ** 2) * p2) / q2) * p1) 
Run Code Online (Sandbox Code Playgroud)

上面的内容在数学上没有任何意义,只是为了解释我的意思.

python

6
推荐指数
1
解决办法
2922
查看次数

如何在python中的多行中编写长算术表达式?

我有一个很长的表达,它不适合我的屏幕,我想写几行。

new_matrix[row][element] =  old_matrix[top_i][top_j]+old_matrix[index_i][element]+old_matrix[row][index_j]+old_matrix[row][index_j]
Run Code Online (Sandbox Code Playgroud)

如果我只是换行,Python 会给我“缩进”错误。有没有办法在屏幕上“适应”长表达?

python newline code-readability

6
推荐指数
1
解决办法
4452
查看次数