如何仅从python中的字符串中获取一部分

时间:2018-11-30 15:41:09

标签: python python-3.x

我有一个包含以下字符串的列表:

Foo

我想提取:

  1. 仅从20181116开始的文件名(或任何其他数据,这是一个动态数字)
  2. 仅具有.CSV和.XLSX的文件名

请注意,文件名的长度可以可变。

如何在python 3中做到这一点?

3 个答案:

答案 0 :(得分:-1)

使用.split拆分字符串并检查适当的令牌。

只需检查拆分所需令牌时是否在索引8和9中,否则相应地调整索引

令人震惊的例子:

my_list = [
    "total 71708",
    "-rw-rw-rw- 1   gpatwprd        tmwdprd 221     Nov 19 12:36 20181116.Something name.6781773.CSV",
    "-rw-rw-rw- 1   gpatwprd        tmwdprd 221     Nov 19 12:36 20171116.Something name.67885.CSV"
]

for line in my_list:
    tokens = line.split()
    if len(tokens) >= 10 and tokens[8].split('.')[0].isnumeric() and \
        (tokens[9].endswith('CSV') or tokens[9].endswith('.XLSX')):
            print(tokens[9])

它打印

name.6781773.CSV
name.67885.CSV

答案 1 :(得分:-1)

以下代码将打印所有必需条目的列表,以及仅包含名称必需文件的列表。 “ data.txt”是包含要使用的数据的文件。希望这会有所帮助!

fileContent = open('data.txt','r');
readLinesfromContent = fileContent.readlines();

splitLinesforSpace = []
for line in readLinesfromContent:
    splitLinesforSpace.append(line.split())

requiredEntries = []
namesofRequiredFiles = []
for idx, x in enumerate(splitLinesforSpace):
    if len(x) == 10:
        if x[8].startswith('20181116'):
            if x[9].endswith('.CSV') or x[9].endswith('.XLSX'):
                requiredEntries.append(readLinesfromContent[idx])
                x[9] = x[9].split('.')
                #Following gives only names of files
                namesofRequiredFiles.append(x[9][0])

print(requiredEntries)
print(namesofRequiredFiles)

答案 2 :(得分:-2)

您可以使用if条件。例如

如果字符串中为“ 20181116”:       做某事