删除输出后面的所有内容“:”

时间:2011-04-25 13:02:00

标签: python linux

当python给我一个输出形式如下:

randomfilename.txt:randomstringmniaonovinaio

我怎样才能从中做出

randomfilename.txt

在python / shell中?

5 个答案:

答案 0 :(得分:2)

>>> 'randomfilename.txt:randomstringmniaonovinaio'.split(':')[0]
'randomfilename.txt'

答案 1 :(得分:2)

>>> s = "randomfilename.txt:dslfkjsdosdfu"
>>> print s.split(":")[0]
randomfilename.txt

答案 2 :(得分:1)

在shell中,您可以使用cut

python yourscript.py | cut --delim=":" -f 1

仅打印第一个:之前的字符串。如果您不想在没有:的情况下获取这些行,如果您的程序中出现这样的行,您还可以在命令中添加-s

答案 3 :(得分:0)

如果您经常这样做,拆分方法效率很低,在这种情况下使用它可能更好:

>>> s='randomfilename.txt:randomstringmniaonovinaio'
>>> s[:s.find(':')]
'randomfilename.txt'

答案 4 :(得分:0)

其他用户已经给出了Python答案。无论出于何种原因,如果您想使用Unix实用程序,我认为您可以选择:

randomFileName=`echo $yourString | sed 's/^\(.*\.txt\):.*/\1/'`

这只是一种替代操作。

转义括号中的位只匹配以.txt结尾的任何字符集,并将其存储在缓冲区中。下一位匹配冒号和后面的任何文本。 ^表示从$yourString开始匹配。

\1然后替换它与第一个模式缓冲区中的任何内容匹配的所有内容。在这种情况下,它应该是您的随机文件名。