'〜'导致null导致python脚本

时间:2017-01-27 15:09:43

标签: regex python-2.7 csv null

我正在尝试从特定列中的csv文件中提取动态值(静态字符),并将值输出到另一个csv。

我想要提取的数据元素是' 12385730561818101591'来自价值' callback=B~12385730561818101591'位于特定列。

我编写了下面的python脚本,但输出结果总是空白的。正则表达式=(~[0-9]+)'经过验证,成功撤出了“12385730561818101591”。值。这是在www.regex101.com上测试的。

当我在Python中使用它时,输出文件中不会显示任何结果。我有一种感觉'〜'导致错误。当我尝试搜索' ~'在原始的CSV文件中,没有找到任何结果,但它就在那里!

社区可以帮助我解决以下问题:

(1)确定无输出的根本原因并验证是否'〜'是问题。问题也可能是我分裂行的方式吗?我不确定这些行是否应按';'而不是'。

import csv
import sys
import ast
import re
filename1 = open("example.csv", "w")

with open('example1.csv') as csvfile:

data = None
patterns = '=(~[0-9]+)'
data1= csv.reader(csvfile)
for row in data1:
    var1 = row[57]
    for item in var1.split(','):
        if re.search(patterns, item):
            for data in item:
                if 'common' in data:
                    filename1.write(data + '\n')
filename1.close()

2 个答案:

答案 0 :(得分:0)

你的例子你的正则表达式是错误的:

=(~[0-9]+)永远不会与callback=B~12385730561818101591匹配,因为B=~之前。 您还要在捕获组中包含~

不能确定你的目标是什么,但这可行。如果您有更多限制,请提供更多详细信息。

=.+~([0-9]+)

修改

根据新提供的信息:

patterns = '=.+~([0-9]+)'
...
    result = re.search(patterns, item):
    number = result.group(0)
    filename1.write(number + '\n')
...

关于\ t(制表符号)中的行拆分,您应该显示完整行的示例

答案 1 :(得分:0)

这里我试着编写示例代码。希望这能帮助您解决问题:

import re
str="callback=B~12385730561818101591"
rc=re.match(r'.*=B\~([0-9A-Ba-b]+)', str)
print rc.group(1)