lis1 = ['TP312.8','TP312C','TP312PY','D912.3'] lis1.sort(key=lambda x: x.replace('C','$C').replace('PY','$PY'))有优雅的写法吗?
时间: 2023-08-06 11:21:10 浏览: 50
可以使用正则表达式来替换字符串中的特定子串,从而避免使用多个 replace() 方法。示例代码如下:
```python
import re
lis1 = ['TP312.8', 'TP312C', 'TP312PY', 'D912.3']
lis1.sort(key=lambda x: re.sub('(C|PY)', r'$\1', x))
print(lis1) # ['D912.3', 'TP312C', 'TP312PY', 'TP312.8']
```
在这个例子中,`re.sub()` 方法使用了一个正则表达式 `(C|PY)` 来匹配字符串中的 `C` 和 `PY`,并使用 `\1` 来表示匹配到的子串。将 `$\1` 作为替换字符串传递给该方法,可以将 `C` 和 `PY` 替换为 `$C` 和 `$PY`。然后,使用 `sorted()` 方法的 `key` 参数以替换后的字符串为排序关键字进行排序。最终结果为 `['D912.3', 'TP312C', 'TP312PY', 'TP312.8']`。
相关问题
lis = os.listdir(video_dir)
根据提供的引用内容,你可以使用以下代码来获取指定目录下的文件列表:
```python
import os
video_dir = '/path/to/video/directory'
lis = os.listdir(video_dir)
print('lis:', lis)
```
这段代码使用`os.listdir()`函数来获取指定目录下的所有文件和文件夹的名称,并将结果存储在`lis`变量中。你可以将`video_dir`替换为你想要获取文件列表的目录路径。
lis = selector.css('.grid_view li')详细解释一下这段代码
这段代码使用了一个 CSS 选择器 `'.grid_view li'`,并将选择器匹配到的所有元素保存在名为 `lis` 的变量中。
具体解释如下:
- `selector` 是一个表示 HTML 或 XML 文档的解析树的对象,可以使用 CSS 选择器来定位和提取其中的元素。
- `css('.grid_view li')` 是 `selector` 对象的一个方法,用于返回所有匹配 CSS 选择器 `'.grid_view li'` 的元素列表。
- `'.grid_view li'` 是一个 CSS 选择器,它的意思是选择所有具有 `class` 属性值为 `'grid_view'` 的父级元素下的所有 `li` 子元素。
- `lis` 是一个变量,用于存储匹配到的元素列表。
通过使用 CSS 选择器,可以方便地定位和提取 HTML 或 XML 文档中符合特定条件的元素。在这个例子中,通过选择器 `'.grid_view li'`,提取了具有 `'grid_view'` 类名的父级元素下的所有 `li` 子元素,并将其存储在 `lis` 变量中,以便进一步处理和操作。