删除unicode [u']

时间:2015-05-21 20:07:51

标签: python python-2.7 unicode-string

我有这个字符串,从网页输入。

s = "[u'967208', u'411600', u'460273']"

我想删除括号[ ]u以及'

我还想制作new line breaks而不是逗号,

我花了很多时间寻找解决方案,包括编码和正则表达式,但我似乎无法让它发挥作用。

已更新:这是我用来检索字符串的内容:

import selenium
import re
input = webdriver.find_element_by_class_name("class_name")
s = re.findall("((?<=\()[0-9]*)", input.text)

2 个答案:

答案 0 :(得分:6)

>>> import ast
>>> s = "[u'967208', u'411600', u'460273']"
>>> a = ast.literal_eval(s)
>>> print(*a, sep='\n')
967208
411600
460273

答案 1 :(得分:2)

如果您只想使用re的数字,请使用\d+

import re

s = "[u'967208', u'411600', u'460273']"
print "\n".join(re.findall(r"\d+", s))
967208
411600
460273

安全高效:

In [7]: timeit "\n".join(literal_eval(s))
100000 loops, best of 3: 11.7 µs per loop

In [8]: r = re.compile(r"\d+")

In [9]: timeit "\n".join(r.findall(s))
1000000 loops, best of 3: 1.35 µs per loop

如果您的目标是将每个字符串写入文件,则可以使用csv模块编写从re.findall返回的字符串列表,使用换行符作为分隔符:

s = u"[u'967208', u'411600', u'460273']"

import csv
import re
with open("out.csv","w") as out:
    wr = csv.writer(out,delimiter="\n")
    r = re.compile("\d+")
    wr.writerow(r.findall(s))

输出:

967208
411600
460273

如果你有很多字符串只是迭代调用调用r.findall并将结果传递给writerow。

我认为在评论之后神秘事件已经解决了,你有一个使用findall从你的正则表达式返回的数字列表,所以你可以做到以下几点:

u"abc(967208) \n abc2(411600) \n abc3(460273)" # input.text

import csv
import re
with open("out.csv","w") as out:
    wr = csv.writer(out,delimiter="\n")
    r = re.compile("\((\d+)\)")
    wr.writerow(r.findall(input.text))

\((\d+)\)会在parens中找到1位数。