为什么我使用rstrip()得到这些结果?

时间:2018-04-19 20:24:13

标签: python string

我想保留不带..csv扩展名的文件名,但是使用rstrip('。csv')会删除以s结尾的字符串中的最后一个字母:

import java.util.stream.*;

int[] array = {1,2,3,4,5};
int sum = IntStream.of(array).sum();

我得到了这个结果:

data_files = [
    "ap_2010.csv",
    "class_size.csv",
    "demographics.csv",
    "graduation.csv",
    "hs_directory.csv",
    "sat_results.csv"
]

data_names = [name.rstrip('.csv') for name in data_files]

字符串人口统计和sat_results的结束已被删除,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:3)

这是因为rstrip()会将所有字符与字符串末尾分开。

>>> 'abcdxyx'.rstrip('yx')
'abcd'

这会搜索yx从字符串的右侧剥离。如果您想删除.csv,则可以使用拆分。

>>> "ap_2010.csv".split('.')[0]
"ap_2010"

同样对于文件名,最好使用函数os.path.splitext

>>> import os
>>> os.path.splitext('ap_2010.csv')[0]
"ap_2010"

答案 1 :(得分:-1)

您可以通过以下方式获得预期的输出:

data_files = [
    "ap_2010.csv",
    "class_size.csv",
    "demographics.csv",
    "graduation.csv",
    "hs_directory.csv",
    "sat_results.csv"
]

data_names = [name.replace('.csv','') for name in data_files]