我的问题与以下内容非常相似:How to get a Substring from list of file names。我是Python的新手,并且希望使用类似的Python(或R)解决方案。我想查看目录,并从每个适用的文件名中提取特定的子字符串,并将其输出为向量(首选),列表或数组。例如,假设我的目录包含以下文件名:
data_ABC_48P.txt
data_DEF_48P.txt
data_GHI_48P.txt
other_96.txt
another_98.txt
我想引用目录并将以下内容提取为字符向量(用于R)或列表:
"ABC", "DEF", "GHI"
我尝试了以下方法:
from os import listdir
from os.path import isfile, join
files = [ f for f in listdir(path) if isfile(join(path,f)) ]
import re
m = re.search('data_(.+?)_48P', files)
但我收到以下错误:
TypeError: expected string or buffer
files
是type
list
In [10]: type(files)
Out[10]: list
即使我最终希望将此字符向量作为R代码的输入,我们仍在尝试将所有“脚本”转换为Python并将R仅用于数据分析,因此Python解决方案将是不错的选择。我也在使用Ubuntu,因此cmd行或bash脚本解决方案也可以工作。提前致谢!
最佳答案
使用列表理解,例如
[re.search(r'data_(.+?)_48P', i).group(1) for i in files if re.search(r'data_.+?_48P', i)]
您需要遍历列表内容以获取所需的子字符串。