相关疑难解决方法(0)

列表理解与lambda +过滤器

我碰巧发现自己有一个基本的过滤需求:我有一个列表,我必须通过项目的属性过滤它.

我的代码看起来像这样:

my_list = [x for x in my_list if x.attribute == value]
Run Code Online (Sandbox Code Playgroud)

但后来我想,这样写它会不会更好?

my_list = filter(lambda x: x.attribute == value, my_list)
Run Code Online (Sandbox Code Playgroud)

它更具可读性,如果需要性能,可以取出lambda来获得一些东西.

问题是:使用第二种方式有什么警告吗?任何性能差异?我是否完全错过了Pythonic Way™并且应该以另一种方式(例如使用itemgetter而不是lambda)来完成它?

python lambda functional-programming list filter

793
推荐指数
12
解决办法
65万
查看次数

用单个空格替换非ASCII字符

我需要用空格替换所有非ASCII(\ x00-\x7F)字符.我很惊讶这在Python中并不容易,除非我遗漏了一些东西.以下函数只删除所有非ASCII字符:

def remove_non_ascii_1(text):

    return ''.join(i for i in text if ord(i)<128)
Run Code Online (Sandbox Code Playgroud)

并且这个用字符代码点中的字节数替换非ASCII字符和空格量(即字符被3个空格替换):

def remove_non_ascii_2(text):

    return re.sub(r'[^\x00-\x7F]',' ', text)
Run Code Online (Sandbox Code Playgroud)

如何用单个空格替换所有非ASCII字符?

无数 类似 SO 问题, 地址 的字符 替换 反对 剥离,进一步解决所有非ASCII字符不是一个特定的字符.

python unicode encoding ascii

228
推荐指数
6
解决办法
18万
查看次数

在Python中检测非英文字符的字符串

我有一些混合了英文和没有英文字母的字符串.例如:

w='_1991_??_??2'
Run Code Online (Sandbox Code Playgroud)

如何使用Regex或Python中的任何其他快速方法识别这些类型的字符串?

我不希望将字符串的字母逐个与字母列表进行比较,而是一次性快速地完成.

python regex non-english

27
推荐指数
5
解决办法
3万
查看次数

使用python/django从字符串中删除非ASCII字符

我有一个存储在数据库中的HTML字符串.不幸的是它包含诸如®之类的字符我希望用它们的HTML等效替换这些字符,无论是在DB本身还是在我的Python/Django代码中使用Find Replace.

有关如何做到这一点的任何建议?

python regex django unicode replace

16
推荐指数
2
解决办法
2万
查看次数

如何消除☎unicode?

在网页抓取过程中以及在删除所有html标签之后,我在unicode(☎)中获得了黑色电话字符\ u260e.但与不同的是,我确实希望摆脱它.

我在Scrapy中使用以下正则表达式来消除html标记:

pattern = re.compile("<.*?>|&nbsp;|&amp;",re.DOTALL|re.M)
Run Code Online (Sandbox Code Playgroud)

然后我试图匹配\ u260e,我想我被反斜杠瘟疫抓住了.我试过这种模式失败了:

pattern = re.compile("<.*?>|&nbsp;|&amp;|\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>|&nbsp;|&amp;|\\u260e",re.DOTALL|re.M)
pattern = re.compile("<.*?>|&nbsp;|&amp;|\\\\u260e",re.DOTALL|re.M)
Run Code Online (Sandbox Code Playgroud)

这些都不起作用,我仍然有作为输出的\ u260e.我怎么能让它消失?

python regex scrapy python-2.7

7
推荐指数
1
解决办法
1164
查看次数

在熊猫中删除中文

我正在尝试从包含拉丁文和中文字符的 csv 中删除所有中文字符。数据看起来像:

    address                                                 lat
1   ?????, Zhangjiang, Pudong New District, 203718       31.204024
2   ??, 3057?, Jinke Road, Pudong, 201203, China          31.181804
Run Code Online (Sandbox Code Playgroud)

我需要它看起来像:

    address                                                 lat
1   , Zhangjiang, Pudong New District, 203718               31.204024
2   , 3057, Jinke Road, Pudong, 201203, China               31.181804
Run Code Online (Sandbox Code Playgroud)

我尝试过df.replace(/[^\x00-\x7F]/g, "")df.replace(/[\u{0080}-\u{FFFF}]/gu,"")但出现错误:

    df1.replace([^\x00-\x7F],"");
                 ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

需要帮忙!谢谢

python string replace dataframe pandas

5
推荐指数
1
解决办法
5023
查看次数