Python string.strip剥离了太多字符

Sih*_*eng 13 python

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

name = 'movies.csv'
table_name = name.strip(".csv")
Run Code Online (Sandbox Code Playgroud)

table_name的期望值应该是"movies",而table_name仍然返回"movie".

它为什么这样做?

Tim*_*ker 15

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

>>> "abcdefabcdefabc".strip("cba")
'defabcdef'
Run Code Online (Sandbox Code Playgroud)

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

>>> table_name, extension = os.path.splitext("movies.csv")
>>> table_name
'movies'
>>> extension
'.csv'
Run Code Online (Sandbox Code Playgroud)


ffi*_*ffi 5

有一种懒惰的方法似乎也可以正常工作(假设您要从中检索名称的所有文件都是 CSV 文件):

if name.endswith('.csv'):    
    table_name = name.rstrip("csv").rstrip(".")
Run Code Online (Sandbox Code Playgroud)

strip()方法删除与括号内的字符匹配的所有前导/尾随字符。因此,该方法的想法是:

  1. 删除csv扩展名 - 因为有一个.我们知道rstrip()将在那里停止搜索。这将为我们留下字符串movies.
  2. .从字符串中删除movies.- -rstrip()只会查找尾随点。

原因rstrip():由于我们知道要删除的文本位于字符串的末尾,因此我们可以指定rstrip更好的控制(即避免无意中删除任何最终的前导c,sv字符)。