社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Jean-François Fabre

Jean-François Fabre 最近创建的主题
Jean-François Fabre 最近回复了

我会用这个表达:

re.findall(r"\bT\w*?T\b",s))
  • 使用单词边界
  • 使用任意数量的 \w 避免两者之间出现匹配的空格
  • 使用“非贪婪”模式(这里可能没有那么有用,因为word boundary已经完成了这项工作)
2 年前
回复了 Jean-François Fabre 创建的主题 » 在这种情况下,如何在Python中使用replace()函数?

切片字符串并仅在您感兴趣的切片上替换,重建字符串。

>>> s = "Land grade 4 year 3 4 members at building 4"
>>> s[0:20]+s[20:24].replace("4","3.5")+s[24:]
'Land grade 4 year 3 3.5 members at building 4'

如果只更换一个,可能会稍微好一点,这样可以避免字符串切片:

>>> s[0:20]+s[20:].replace("4","3.5",1)
'Land grade 4 year 3 3.5 members at building 4'

但是如果你确切地知道要替换的数字在哪里,那可能是因为你可以用一个模板字符串来替换。

s = "Land grade 4 year 3 {} members at building 4"
s.format(3.5)
4 年前
回复了 Jean-François Fabre 创建的主题 » python切片的奇怪行为

a[3:8:-1] 指示python从3开始,按-1的步骤转到8

这将创建一个空列表:通过添加 -1 (就像 list(range(3,8,-1)) 这也给出了一个空列表)

当你这样做的时候 a[:5:-1] 然后start是默认的start,python将其设置为“end of list”,这样它就“工作了”

和你一样 a[::-1] start&stop是默认的,python知道它们是从头到尾的(否则这个符号将不可用)

5 年前
回复了 Jean-François Fabre 创建的主题 » 按时间对csv行进行排序,python格式为“oct 03 10:06:20”

不要将日期与其他数据分离。重新整理排序键,使其占据行的第二项,并将行传递给它。

它应该做到:

result = sorted(df.iterrows(),key=lambda row: datetime.strptime(row[1], "%b %d %H:%M:%S"))
5 年前
回复了 Jean-François Fabre 创建的主题 » 替换字符串第一个字母的python代码:字符串索引错误

你得到的问题是因为有些行是空的。

那么你的替代品错了:

  • 首先,因为它将指定行的第一个“字符”,但不能更改字符串,因为它是不可变的。
  • 第二个原因是替换值是整个字符串减去一些破折号
  • 第三是因为 line 在下一个迭代中丢失。顺便说一下,原始的行列表也是。

如果要删除字符串的第一个字符,则无需 replace ,只需分割字符串(不要冒险删除其他类似字符)。

一个有效的解决方案是用 startswith 并重新生成一个新的字符串列表。然后回来

text = """hello
-yes--
who are you"""

new_text = []

for line in text.splitlines():
    if line.startswith("-"):
        line = line[1:]
    new_text.append(line)

print("\n".join(new_text))

结果:

hello
yes--
who are you

使用更多的经验,您可以将此代码打包为列表理解:

new_text = "\n".join([line[1:] if line.startswith("-") else line for line in text.splitlines()])

最后,正则表达式模块也是一个不错的选择:

import re
print(re.sub("^-","",text,flags=re.MULTILINE))

这将删除以破折号开头的所有行上的破折号。多行标志告诉正则表达式引擎要考虑 ^ 作为行的开始,而不是缓冲区的开始。

5 年前
回复了 Jean-François Fabre 创建的主题 » python身份危机为什么l或x复制0不使新的0[复制]

如评论中所述,它是某个地方的参考副本。由于您有两个以上的级别,因此不能仅通过滥用 [:] .

实现正确结构创建的最快、最恶毒的方法是删除所有循环和副本(即使它们有效,也可能会使用 copy.deepcopy() 例如)并使用 嵌套列表理解 :

 z = [[[0]*size for _ in range(size)] for _ in range(size)]

内部层可以使用 [0]*size 因为整数是不可变的,所以不需要 [0 for _ in range(size)] 正如我们有时看到的。

所以,一条线,清晰,快速。用它。

5 年前
回复了 Jean-François Fabre 创建的主题 » python使用if语句验证多个值

为什么不使用 all 列/检查值的压缩列表?

if all(value[col] == check for col,check in zip((col1,col2),(check1,check2))):

如果你有更多的参数,我建议你:

def validate(self, data, check1, check2, col1, col2):

进入之内

def validate(self, data, check_values, columns):

所以你可以适应:

if all(value[col] == check for col,check in zip(columns,check_values)):

而且,由于这些值和列是链接的,所以可以直接传递元组列表或将它们链接在一起的字典 validate .

5 年前
回复了 Jean-François Fabre 创建的主题 » 编写一个python程序,在列表的每个元素之前插入一个元素

chain 各种方法不是问题所在,您的问题归结为:

>>> a = zip([1],[2])
>>> list(a)
[(1, 2)]
>>> list(a)
[]

一旦你迭代了 zip_iter 变量,它第二次什么都不产生,就是这样 zip 作品( range 例如,可以多次迭代,但这是因为它将整数作为参数,而不是iterable,在第二次运行时可能会耗尽这些参数…)

最后一个例子之所以有效,是因为您正在创建一个新的 拉链 对象。

5 年前
回复了 Jean-François Fabre 创建的主题 » 如何在python中删除字符串中的某些空格?[副本]

可以使用正则表达式并将表达式配置为将n个或多个空格/换行符/制表符/空格替换为一个空格:

import re

s = "hello     \n   world"
print(re.sub("\s{4,}"," ",s))

印刷品:

hello world

在这里,它将删除所有空格/换行符/制表符/任何内容( \s 在regex中)如果其中至少有4个,并且将仅替换为一个空格(为了避免在替换后对分隔的单词进行排序,可以将其替换为换行符或无字符)。

5 年前
回复了 Jean-François Fabre 创建的主题 » runtimeerror:在python中迭代期间字典更改了大小

如果创建查找字典:

gender_lookup = { 'F' : 1, 'M' : 0 }

然后,您可以使用字典理解更新其他字典:

updated = { student_id : gender_lookup[gender] for student_id,gender in Gender_dict.items() } 
5 年前
回复了 Jean-François Fabre 创建的主题 » runtimeerror:在python中迭代期间字典更改了大小

在迭代字典时,完全可以 改变 现有的 关键。

您不能做的是:添加或删除键。

你不小心用了 价值 以字典为键,创建额外的键并生成错误消息。

一般来说,这种 完整的听写更新 最好使用字典理解,覆盖旧字典:

Gender_dict = {Student_ID:"1" if Gender == "F" else "M" for Student_ID, Gender in Gender_dict.items()}