我的问题与以下内容非常相似: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


filestype 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)]


您需要遍历列表内容以获取所需的子字符串。

10-01 18:19
查看更多