这个文本处理代码是Pythonic吗?

这个文本处理代码是Pythonic吗?,python,text,Python,Text,我需要将一行文字(单词)在该行中点后的第一个空格处一分为二;e、 g: The quick brown fox jumps over the lazy dog. ^ 上面这条线的中点在位置22,这条线在单词“jumps”后面的空格处分开 如果您能看一下下面的代码并告诉我它是否是Pythonic,我将不胜感激。如果没有,请建议正确的方法。非常感谢。(PS:我来自C++背景) 我认为这更清楚 midLine = len(line) / 2 pa

我需要将一行文字(单词)在该行中点后的第一个空格处一分为二;e、 g:

The quick brown fox jumps over the lazy dog.
                         ^
上面这条线的中点在位置22,这条线在单词“jumps”后面的空格处分开

如果您能看一下下面的代码并告诉我它是否是Pythonic,我将不胜感激。如果没有,请建议正确的方法。非常感谢。(PS:我来自C++背景)


我认为这更清楚

midLine = len(line) / 2  
part1 = line[:midLine]
part2 = line[midLine:]
left, right = part2.split(' ', 1)
linePart1 = part1+left
linePart2 = right

Pythonic将在可用的情况下使用内置函数<代码>字符串.索引在此处执行此操作

def half(s):
    idx = s.index(' ', len(s) / 2)
    return s[:idx], s[idx+1:]

如果没有合适的位置断开字符串,这将引发ValueError。如果您不想这样做,您可能需要调整代码。

我不确定pythonic方法,但您可以使用以下几个技巧:

if foundSpace:
您可以将线拆分为一半,然后搜索:

the2ndPart = line[len(line) / 2 :]
您不必为使用

firstSpace = the2ndPart.find("")
无需在if语句中使用
()
,也可用于正确/错误使用
is

 if foundSpace is True:
*通过@user7610注释,您可以使用:

if foundSpace:
只是为了好玩,这里有一款乳液:

myString = "The quick brown fox jumps over the lazy dog."

halfWay = len(myString) / 2

print myString[myString[halfWay:].find(" ") + halfWay :]
输出:

 over the lazy dog.

我能给你的最好的“pythonic”技巧是:“pythonic”方法很好,直到它不可读为止,有时简单更好。

If
booleanVariable==True
读起来有点奇怪。也可以考虑使用<代码>…else
而不是旗帜。@Hyperboreus:+1谢谢!不知道for循环可以有一个else部分。不知道可以返回多个值。如何调用
half
函数?谢谢。例如:
a,b=half('hello crume world')
但是如何在函数调用时将行的两部分取回来?@Sabuncu这就是
a,b
的目的
a=s[:idx]
b=s[idx+1::
@Sabuncu您只有一个返回值,在本例中是一个元组。由于foundSpace是一个布尔值,因此无需将其与True进行比较,如果foundSpace:完全足够。根据我的经验,这是刚开始编程的人所做的事情。他们为此受到抨击,学会了,然后又抨击其他人。@user7610我这样做只是为了澄清关于is的一点,不过你的评论是对的,我更新了我的答案。