删除时使用Python()默认值\n?

2024-10-01 19:27:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在处理字符串,从命令行获取输入。例如,使用此输入:

format driveName "datahere"

当我走的时候字符串.拆分(),结果是:

^{pr2}$

这就是我想要的。在

但是,当我指定为字符串.拆分(“”,2),我得到:

>>> input.split(' ', 2)
['format\n, 'driveName\n', '"datahere"']

有人知道我为什么和如何解决这个问题吗?我以为这可能是因为我在Windows上创建并运行在Unix上,但是在Unix中使用nano时也会出现同样的问题。在

第三个参数(data)可能包含换行符,因此我谨慎地不要使用一个彻底的换行符移除器。在


Tags: 字符串命令行formatinputdata参数nanowindows
3条回答

使用None可获得具有限制的默认空白拆分行为:

input.split(None, 2)

这使得input()结尾的空白保持不变。在

或者,您可以在之后去掉这些值;这将从每个结果字符串的开始和结尾(而不是中间)删除空白,就像input.split()将:

^{pr2}$

split()中的默认分隔符是所有空白,包括换行符\n和空格。在

这是docs on split说的:

str.split([sep[, maxsplit]])

If sep is not specified or is None, a different splitting algorithm is 
applied: runs of consecutive whitespace are regarded as a single 
separator, and the result will contain no empty strings at the start 
or end if the string has leading or trailing whitespace. 

当您定义一个新的sep时,它只使用这个分隔符来split字符串。在

默认的str.split针对许多“空白字符”,包括制表符和其他字符。如果执行str.split(' '),则告诉它在' '(一个空格)上只拆分一个。您可以通过指定None获得默认行为,如str.split(None, 2)。在

可能有更好的方法来实现这一点,这取决于您的实际用例是什么(您的示例没有复制问题…)。由于示例输出暗示新行作为分隔符,所以应该考虑显式地拆分新行。在

inp = """
format
driveName
datahere
datathere
"""
inp.strip().split('\n', 2)
# ['format', 'driveName', 'datahere\ndatathere']

在第一个项目和第二个项目中允许有空格。在

相关问题 更多 >

    热门问题