V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wxf666  ›  全部回复第 25 页 / 共 34 页
回复总数  665
1 ... 17  18  19  20  21  22  23  24  25  26 ... 34  
2022-09-02 00:38:13 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@mylifcc 28 楼有个小地方写错了,

{k: f'\\{v}' for k, v in zip('\b\t\n\f\r\\"', 'btnfr"\\')}

改成

{k: f'\\{v}' for k, v in zip('\b\t\n\f\r\\"', 'btnfr\\"')}
2022-09-02 00:30:51 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@JamesMackerel
@llsquaer
@mylifcc

尝试用正则实现了,可在 regexr.com regex101.com 运行

1. 可以是数字、布尔、空值、字符串、列表、字典的随意组合

2. 除了字典的键会直接字符串化外,其他字符串会遵循 json 的要求,不包含控制字符和 \ "(替换为转义字符或十六进制)


以前写过『用正则去除 不规则 json 中的末项逗号』(如:[1, 2, 3,]),想着拿来改改就好

发现功力不够,必须要用到 (?>...) 特性,来防止回溯(即,碰到 \ 就一定要继续匹配后面的转义字符)

但这也导致 JavaScript 、Golang 、Python 3.10 及以下版本 无法使用( Python 3.11 开始支持了)


正则:"((?:(?>\\?).)*?)"\s*(:)|("(?:\\?.)*?")
替换:$1$2$3
引擎:PCRE


『例子( v 站排版原因,行首有若干全角空格,但不影响)』

[
  "\"fake_key\": value",
   123, true, false, null,
  {
    "key1" : "\n\\\":,]:\\",
    "key2" : "\n\\\":,}:\\",
  },
]


『替换后』

[
  "\"fake_key\": value",
   123, true, false, null,
  {
     key1: "\n\\\":,]:\\",
     key2: "\n\\\":,}:\\",
  },
]
2022-09-01 22:35:52 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@mylifcc 这个应该是 js 的对象(字面量)吧: https://zh.javascript.info/object


试着写了一个( v 站排版原因,行首有若干全角空格):

1. 可以是数字、布尔、空值、字符串、列表、字典的随意组合

2. 除了字典的键会直接字符串化外,其他字符串会遵循 json 的要求,不包含控制字符和 \ "(替换为转义字符或十六进制)


from typing import Sequence, Mapping

ESCAPE_TABLE = str.maketrans(
  {chr(i): f'\\u{i:04x}' for i in range(32)} |
  {k: f'\\{v}' for k, v in zip('\b\t\n\f\r\\"', 'btnfr"\\')}
)

def jsonify(obj) -> str:
   if isinstance(obj, str):
     return f'"{obj.translate(ESCAPE_TABLE)}"'
   elif isinstance(obj, Sequence):
     return f"[{', '.join(map(jsonify, obj))}]"
   elif isinstance(obj, Mapping):
     return f"{{{', '.join(f'{k}: {jsonify(v)}' for k, v in obj.items())}}}"
   else:
     return str({
       None: 'null',
       True: 'true',
       False: 'false',
    }.get(obj, obj))
2022-09-01 20:21:36 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@mylifcc 对了,若是 key 包含 " \ : <换行> 等字符,你打算咋表示呢?

{
 \": "引号",
 \\: "斜杠",
 \:: "冒号",
 \n: "换行"
}

这样?
2022-09-01 19:34:23 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@documentzhangx66 我不知道你打算怎么备份,tar ? rsync ? dd ?或者啥更专业的命令

要不你直接说会碰到啥问题吧
2022-09-01 19:17:40 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@JamesMackerel
@llsquaer

写漏了

然后被替换成『"\fake_key\": value"』了
2022-09-01 19:12:12 +08:00
回复了 mylifcc 创建的主题 Python 怎么才能在 Python 中输出一个 key 不带引号的字典呢
@JamesMackerel
@llsquaer

正则替换,要考虑不少东西的。比如:

1. 键值对里的值,不一定全是字符串,还可以是数字、列表、字典等

2. 就算是『"(.+?)"\s*:』,也有可能是『'"fake_key": value'』,序列化成『"\"fake_key\": value"』,然后被替换成『"\fake_key\": value 』了
2022-09-01 18:27:56 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@documentzhangx66 你日常在 shell 里都打些啥命令啊,天天碰到这些问题么。。
2022-09-01 11:09:28 +08:00
回复了 badboy17 创建的主题 数据库 mysql 为什么一定要生成聚簇索引
不生成聚簇索引。。是打算变成 csv 么。。
2022-09-01 10:42:32 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@documentzhangx66 在交互式下,你也认为『 New-Item ... 比 ln ... 好,因为前者能让你清楚地知道,你在干嘛』吗?
2022-08-31 10:44:17 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@newmlp 那我为何不直接用自带的 bash zsh ,而要去安装个 ps 再打同样的命令呢?

现在就是在问,ps 对于交互式操作,自身的什么优越性,起到了什么明显的优化作用,以至于能甩 bash zsh 几条街?
2022-08-31 04:12:24 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@geelaw 我不熟悉 powershell ,只是印象中命令都很长

所以直接拿 35 楼的命令,在 powershell 一点点试哪里可以 <tab>

如果都像你说的这么简短,倒真的可以试着学学


> 好的品位是不去比较这种天花乱坠的写法

我认为 交互式 shell 应该怎么简洁快速怎么来。脚本才重视可读性


> 另外 grep (可执行文件)和 ln (可执行文件)都不是 shell/bash 的一部分

这应该是 Linux 的哲学,一个 shell 就该当好用户与系统交互、胶水语言的角色,不是由它实现所有功能
2022-08-31 03:12:05 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@PrinceofInj 是这样吗?(我用 35 楼的试试)

1. 软链接

- `new-it<tab> -t<tab> s<tab> -t<tab> foo -p<tab> bar`(按 30 次)
- `ln -s foo bar`( 13 )

2. 过滤

- `| out-s<tab> -<tab> | sel<tab>-s<tab> -<tab> foo`( 28 )
- `| grep foo`( 10 )
2022-08-31 01:44:03 +08:00
回复了 CUPAIR 创建的主题 Vim vim 正则=~含义?
@lisongeee 啊,写了这么久 markdown ,居然没注意到这个基础语法规则。。
2022-08-31 00:15:17 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@ColorfulBoar 你能给出一些交互式下,大家常用的,powershell 明显比 bash 短的例子吗?
2022-08-30 23:14:30 +08:00
回复了 CUPAIR 创建的主题 Vim vim 正则=~含义?
诶,没写漏。。 @lisongeee 为嘛你的 markdown 油猴脚本,会自动吃掉一个 反斜杠 \ ?
2022-08-30 23:12:54 +08:00
回复了 CUPAIR 创建的主题 Vim vim 正则=~含义?
写漏了

:echo "a " =~ "\\s"
2022-08-30 23:12:25 +08:00
回复了 CUPAIR 创建的主题 Vim vim 正则=~含义?
这样?

:echo "a " =~ "\\s"
2022-08-30 22:57:11 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@chengliang 想问一下,你们以交互式使用 powershell 多吗?还是多作为脚本使用?
2022-08-30 22:50:49 +08:00
回复了 pepi 创建的主题 程序员 PowerShell 这种强大的命令行工具,为什么使用的人很少?
@pepi 相比 bash 等 shell ,powershell 交互使用稍显繁琐吧(命令太长了?)

写脚本应该比 bash 强。但这方面 python 也很强

我没搞懂 powershell 定位
1 ... 17  18  19  20  21  22  23  24  25  26 ... 34  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1716 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
Developed with CodeLauncher
♥ Do have faith in what you're doing.