Python string.strip剥离了太多字符

时间:2013-11-30 22:09:08

标签: python

我使用Python 3处理文件名,这是我的代码:

name = 'movies.csv'
table_name = name.strip(".csv")

table_name的预期值应该是“movies”,而table_name会一直返回“movie”。

为什么要这样做?

3 个答案:

答案 0 :(得分:13)

strip()从输入字符串中删除与参数字符串中的一个字符匹配的所有前导和尾随字符:

>>> "abcdefabcdefabc".strip("cba")
'defabcdef'

您想使用正则表达式:table_name = re.sub(r"\.csv$", "", name)os.path路径操作函数:

>>> table_name, extension = os.path.splitext("movies.csv")
>>> table_name
'movies'
>>> extension
'.csv'

答案 1 :(得分:1)

我不知道您需要的是什么,但如果它在没有扩展程序的情况下检索文件名,则您有os.path.splitext function

>>> import os
>>> name, extension = os.path.splitext("movies.csv")
>>> name
'movies'

答案 2 :(得分:0)

也许有点晚,但是对于以后阅读此书的人来说,还有一种懒惰的方法似乎也可以正常工作(假设要从中检索名称的所有文件都是CSV文件):

if name.endswith('.csv'):    
    table_name = name.rstrip("csv").rstrip(".")

如其他解决方案中所述,strip()方法将删除所有与括号内的字符匹配的前导/尾随字符。因此,这种方法的想法是:

  1. 删除csv扩展名-由于存在.,我们知道rstrip()将在此处停止搜索。这将给我们留下movies.字符串。
  2. .字符串中删除movies.-rstrip()仅查找尾随点。

为什么要rstrip() :由于我们知道要删除的文本位于字符串的末尾,因此我们可以指定rstrip以便更好地控制(即避免无意中删除所有最终的前c,s或v个字符)