python - 如何为字符串中的每个元素提取第二个单词。(Python)
问题描述
更新:所以列表中的一些字符串只有一个单词长,这就是它抛出索引错误的原因。
我正在尝试提取每个元素中的第二个单词并将其保存到列表中。我IndexError: list index out of range
在运行这个时得到了一个。
df_list = [isplit()[0] for i in df_list]
可以提取第一个单词,但在 index=1 上运行相同的代码似乎不起作用。
df_list = ['ACTVIVTY PLN CMD', 'ACTIVITY CUST COST', 'OPTY TWO ORG', 'ORG PLN ACTION', 'ACTIVITY', 'PLN ORG']
df_list = [i.split()[1] for i in df_list]
解决方案
如果你有一个只有一个单词的字符串,i.split()
会给你一个长度为 1 的列表,然后尝试在位置 1(第 2 个项目)处获取项目会给你一个错误。
df_list = ['ACTVIVTY PLN CMD', 'ACTIVITY CUST COST', 'OPTY TWO ORG', 'ACTIVITY']
有多种方法可以检查这一点,例如:
df_list = [word for words in df_list for i, word in enumerate(words.split()) if i == 1]
或者:
df_list = [words.split()[1] for words in df_list if len(words.split()) > 1]
或者 yuou 也可以寻找分割单词的字符(通常是空格,但也可能是一些其他字符,如制表符等)。
在性能方面,第一个有第二个 for 循环,第二个对每个字符串有两次 split() 调用,第三个必须检查字符串是否存在这些字符,所以没有测试就没有明确的赢家。
推荐阅读
- php - 如何在 IONIC 4 中显示数据
- python - 在连体网络上实施 Gradcam?
- r - ggplot:如何为具有0值的组插入空白geom_col
- flutter - 用于颤振的 Google 字体包无法在发布模式下加载字体
- c# - 无法在 SSIS 项目中安装 MongoDB.Driver 版本 2.11.2
- algorithm - 以下代码的复杂度是 O(n) ,但是如果将 arr [ i ] < arr [ j ] 更改为 arr [ i ] < = arr [ j ],复杂度仍然保持不变吗?
- java - while循环嵌套if else java
- batch-file - 如何批量创建和组合“InstallDate”输出与“xxx Days Ago”?
- docker - 本地 Docker 与 CircleCI Docker 中 Puppeteer 的字体渲染差异
- javascript - 在多维对象数组中推送值 - 打字稿