2024-05-07 13:54:35 发布
网友
我在编写代码时遇到的一个小问题。你知道吗
我想打印出一个.txt文件的名字。 例如,文件名为:verdata_佛罗里达.txt,或verdata_纽约.txt 如何排除.txt和verdata,但将字符串保持在两者之间?它必须适用于任意数量的字符,但必须排除.txt和verdata。你知道吗
到目前为止,我已经定义了要输入的文件名()
print("Average TAM at", str(filename[8:**????**]), "is higher than ")
假设您希望它在第一个_和最后一个.上拆分,那么可以使用切片和index和rindex函数来完成此操作。这些函数将搜索括号中第一个出现的子字符串并返回索引号。如果没有找到子字符串,它们将抛出一个ValueError。如果需要搜索,而不是ValueError,那么也可以使用find和rfind,这两种方法做相同的事情,但如果没有找到匹配项,则总是返回-1。你知道吗
_
.
index
rindex
ValueError
find
rfind
-1
s = 'verdata_new_hampshire.txt' s_trunc = s[s.index('_') + 1: s.rindex('.')] # or s[s.find('_') + 1: s.rfind('.')] print(s_trunc) # new_hampshire
当然,如果总是要排除verdata_和.txt,那么也可以总是硬编码片段。你知道吗
verdata_
.txt
print(s[8:-4]) # new_hampshire
三种方法:
使用str.split两次:
str.split
>>> "verdata_florida.txt".split("_")[1].split(".")[0] 'florida'
使用str.partition两次(如果格式不匹配,则不会出现异常,而且可能更快):
str.partition
>>> "verdata_florida.txt".partition("_")[2].partition(".")[0] 'florida'
使用re,仅保留中心部分:
re
>>> import re >>> re.sub(".*_(.*)\..*",r"\1","verdata_florida.txt") 'florida'
如果_和.出现多次(我们必须保持最长或最短的字符串),则必须调整上述所有内容
编辑:不过,在您的情况下,前缀和后缀似乎是固定的。在这种情况下,只需使用str.replace两次:
str.replace
>>> "verdata_florida.txt".replace("verdata_","").replace(".txt","") 'florida'
您可以在字符串上利用str.split()。例如:
str.split()
s = 'verdata_newyork.txt' s.split('verdata_') # ['', 'florida.txt'] s.split('verdata_')[1] # 'florida.txt' s.split('verdata_')[1].split('.txt') ['florida', ''] s.split('verdata_')[1].split('.txt')[0] # 'florida'
假设您希望它在第一个
_
和最后一个.
上拆分,那么可以使用切片和index
和rindex
函数来完成此操作。这些函数将搜索括号中第一个出现的子字符串并返回索引号。如果没有找到子字符串,它们将抛出一个ValueError
。如果需要搜索,而不是ValueError
,那么也可以使用find
和rfind
,这两种方法做相同的事情,但如果没有找到匹配项,则总是返回-1
。你知道吗当然,如果总是要排除
verdata_
和.txt
,那么也可以总是硬编码片段。你知道吗三种方法:
使用
str.split
两次:使用
str.partition
两次(如果格式不匹配,则不会出现异常,而且可能更快):使用
re
,仅保留中心部分:如果
_
和.
出现多次(我们必须保持最长或最短的字符串),则必须调整上述所有内容编辑:不过,在您的情况下,前缀和后缀似乎是固定的。在这种情况下,只需使用
str.replace
两次:您可以在字符串上利用
str.split()
。例如:相关问题 更多 >
编程相关推荐