0

我一直在绞尽脑汁想如何做到以下几点:

如果我有大量数据,例如"003 HELLO, banana apple,xyz 004 HELLI, pear peach,lmn" 我有一个完整的文档,其中包含这样的行,需要拆分为:

003     HELLO, banana apple,xyz
004     HELLI, pear peach,lmn

对我来说,合乎逻辑的做法是在第二个逗号后面的单词之后拆分行,因为这是一种贯穿始终的模式。

当然,必须有一种方法可以使用 re 函数来做到这一点。

知道怎么做吗?

非常感谢大家

4

4 回答 4

0

您能否更具体地说明您期望的结果?如果您试图将一堆行拆分为一个列表,您可以随时使用.split( '\n' ).

于 2012-08-22T22:35:37.920 回答
0

要遍历整个文件,您可以执行以下操作:

lines = []

with open('file.txt', 'r') as handle:
  for line in handle:
    lines.append(line.split(',')[-1].strip())

print lines

我对您要从文件中提取的内容感到有些困惑,因此,如果澄清了这一点,我的答案可能会变得无效。

于 2012-08-22T22:38:21.977 回答
0

也许这

import re
result = re.findall(["[^,\s]*,[^,]*,\S*", data)

例如

re.findall(["[^,\s] ,[^,] ,\S*", "003 HELLO, 香蕉苹果,xyz 004 HELLI, 梨桃,lmn")
['003 HELLO, 香蕉苹果,xyz' ,'004 HELLI,梨桃,lmn']

于 2012-08-22T22:39:37.377 回答
0

是的,您可以使用正则表达式来提取数字。这是一个例子:

import re

s = '003 HELLO, banana apple,xyz'

m = re.match(r'^(\d+) ', s)
if m:
    digits = m.group(1)
    value = int(digits)
    print "{} : `{}`".format(value, s[len(digits):].strip())
else:
    print "Invalid format"

正则表达式看起来^(\d+)和可以解释为:

  • 字符串的开头^
  • 一组(...)
  • 一个数字\d
  • ...重复 1 次以上+
  • 空间

稍后使用 提取匹配组的值(即数字)m.group(1)

于 2012-08-22T22:39:52.267 回答