【发布时间】:2014-03-07 05:00:49
【问题描述】:
我有一个宽度有限的文本列,每一行都是多个元素的列表,由分号分隔。我想删除所有导致行超过字符限制的列表元素。
以前我用的是
if len(row[7].split(';')) > 5:
row[7] = ('; '.join(row[7].split(';')[1:5]).strip())[:45]
这会产生两个明显的问题:
- 某些列表的元素少于 5 个且字符多于 45 个,因此条件不会像应有的那样删除多余的元素
- 列表元素在单词中间被截断。
这是一个示例输入:
Foo; Bar; Aoicsdeadwcwewrw; owierwicowmwoemow; aoweirwoer
ODIFUWE
acowierwe; asodicjwoer; s; ow; w; w
这是相应的示例输出:
Foo; Bar; Aoicsdeadwcwewrw
ODIFUWE
acowierwe; asodicjwoer; s; ow; w
限制为 5 个元素或 45 个字符,如果行达到这些限制中的任何一个,则应切断尾随元素。
【问题讨论】:
-
45 个字符中的分号和空格你算吗?
-
另外,如果列表中的第一项超过 45 个字符,你想做什么?剪切所有内容,导致一个空字符串?
-
是的,是的,很好的说明。
标签: python list python-2.7 csv slice