【发布时间】:2014-02-03 19:47:07
【问题描述】:
我一直在尝试清理一个 txt 文件,而且我几乎完成了。我的列表有问题 - 我无法选择我在 process_line() 中创建的列表中与 ### 对应的元素。
下面是sn-p的代码;
def process_line(line):
# receiving a line or string as function
# argument and replacing '-' 'D00-D09' & 'F00-F09' to '' if it exists
line = re.sub('D0+\d|F0+\d|-', '', line)
seq = str(line.split())
line = re.sub('\'|\\[|\\]|,', '', seq)
### line = (seq[0] + '|' seq[3] + '-' seq[5]) # this is for shorter lines
print line
return line + '\n'
这是删除一些不需要的数据后的一组样本数据
12asA 1 A 4 A 330
12asB 1 B 4 B 330
12caA 1 A 5 A 260
12e8H 1 H 1 H 113 1 H 114 H 212 H 213 H 214 (2)
12e8L 1 L 1 L 107 1 L 108 L 211 L 212 L 214 (3)
我希望实现这样的格式,但是我需要学习如何提取所需的元素 - 这样我才能将数据重新排列为所需的格式:
12asA|4-330
12asB|4-330
12caA|5-260
12e8H|1-113,114-212
12e8l|1-107, 108-211
而不是得到例如。 23reA|1-14,56-65我得到了一些东西[2|1-A]
【问题讨论】:
-
为什么不在
line='|'.join(line.split())之后做line = re.sub('D0+\d|F0+\d|-', '', line) -
你能提供一个例子
line吗? -
能否提供线路输入示例?
-
对正则表达式始终使用原始字符串 (
r"...")。 -
我不明白
seq = str(line.split())行的str部分。line.split()将line分解成我认为你想要的部分——没有必要用它制作一个字符串,然后删除你引入的括号和引号。
标签: python regex python-2.7