NODES: String Formatter, String List
ComfyUI的字符串相关的自定义节点,其中包括 String Formatter、StringList、StringListFromCSV、StringListToCSV、StringConverter、StringMatcher、TimeFormatter、ShowTranslateString 节点,以提高在处理字符串时的效率和灵活性。
直接拖入ComfyUI即可使用
ComfyUI/custom_nodes
目录下:cd custom_nodes
git clone https://github.com/liuqianhonga/ComfyUI-String-Helper.git
字符串格式化节点允许你使用Python的f-string语法来格式化字符串。你可以在模板字符串中引用最多10个输入参数(arg1到arg10)且自由定制模板。对于复杂的语法,需要了解Python的f-string格式化语法。
arg1: "小明"
arg2: "ComfyUI"
模板: "你好 {arg1},欢迎来到 {arg2}!"
输出: "你好 小明,欢迎来到 ComfyUI!"
arg1: 10
arg2: 20
arg3: 30
模板: "计算结果: {arg1} + {arg2} = {arg3}"
输出: "计算结果: 10 + 20 = 30"
arg1: {"名称": "模型_v1", "类型": "checkpoint"}
模板: "模型信息: {arg1}"
输出: "模型信息: {'名称': '模型_v1', '类型': 'checkpoint'}"
如果模板或格式化过程中出现错误,节点将返回错误信息字符串:
当引用了未提供的参数时:
模板: "你好 {arg1},{arg2}"
arg1: "世界"
输出: "Format Error: name 'arg2' is not defined"
StringList 节点允许你灵活地选择和翻译字符串。你可以通过手动输入、随机选择或指定编号选择字符串,并可选地将其翻译为英文。
-1
:返回所有输入字符串0
:返回空列表1-10
:随机选择指定数量的字符串random_select_count
失效False
。启用后,将选定的字符串从自动检测的语言翻译为英文random_select_count: 3
translate_output: False
string1: "你好"
string2: "世界"
string3: "欢迎"
输出: 随机选择3个字符串
selected_numbers: "1,3"
translate_output: True
string1: "你好"
string2: "世界"
string3: "欢迎"
输出: ["Hello", "Welcome"]
selected_numbers: "1,3"
translate_output: False
string1: "你好"
string2: "世界"
string3: "欢迎"
输出: ["你好", "欢迎"]
random_select_count: 2
string_list: ["额外1", "额外2"]
输出: 随机选择2个字符串并合并外部列表
StringListFromCSV 节点允许你从 CSV 文件中读取和选择字符串。这个节点提供了与 StringList 节点类似的功能,但数据源来自 CSV 文件。节点支持从预定义的模板格式 CSV 文件中读取原始字符串或其翻译版本。
False
。启用后,使用 translate_string
列的内容-1
:返回所有字符串0
:返回空列表>0
:随机选择指定数量的字符串random_select_count
失效False
。启用后,将选定的字符串翻译为英文False
。控制是否重用上次的随机结果:
False
:每次执行都重新随机选择True
:保持使用上一次的随机结果CSV 文件必须包含以下列:
string
列:原始字符串translate_string
列:对应的中文翻译csv_file: "template/string_list.csv"
random_select_count: 3
reuse_last_result: True # 保持使用上次的随机结果
csv_file: "template/string_list.csv"
use_translated: True # 使用 translate_string 列的内容
random_select_count: 2
reuse_last_result: False # 每次执行重新随机
# 步骤 1:获取新的随机结果
reuse_last_result: False # 临时设为 False 获取新的随机结果
# 步骤 2:保持新的随机结果
reuse_last_result: True # 改回 True 保持新的结果
string
和 translate_string
两列reuse_last_result
为 True 时,节点会保持使用上一次的随机结果,直到你将其设为 False 以获取新的随机结果String List To CSV 节点允许你将字符串列表保存到 CSV 文件中,可选择是否翻译字符串以及是追加还是覆写文件。生成的 CSV 文件遵循与模板文件相同的格式。
必需参数:
output/string_list_output.csv
False
。设置为 True
时会将输入的字符串翻译为中文,作为 translate_string
列的值True
。设置为 True
时会追加到现有文件,否则会覆写文件可选参数:
string: "Hello World"
csv_file: "output/my_strings.csv"
translate: True
append_mode: False
输出文件内容:
string,translate_string
Hello World,你好世界
返回值:
processed_strings: ["Hello World"]
skipped_strings: []
string_list: ["Hello World", "Good Morning"]
csv_file: "output/my_strings.csv"
translate: True
append_mode: False
输出文件内容:
string,translate_string
Hello World,你好世界
Good Morning,早安
返回值:
processed_strings: ["Hello World", "Good Morning"]
skipped_strings: []
string: "Hello World"
string_list: ["Good Morning", "Artificial Intelligence"]
csv_file: "output/my_strings.csv"
translate: True
append_mode: False
输出文件内容:
string,translate_string
Good Morning,早安
Artificial Intelligence,人工智能
Hello World,你好世界
返回值:
processed_strings: ["Good Morning", "Artificial Intelligence", "Hello World"]
skipped_strings: []
translate_string
列将为空String Matcher 节点用于从一组条件匹配规则中找到与输入值匹配的结果。每个条件规则都是以 "条件:值" 的格式定义的。
condition_list: """
red:red color
blue:blue color
green:green color
"""
match_value: "red"
default_value: "unknown color"
输出: "red color"
condition_list: """
1:one
2:two
3:three
"""
match_value: 2 # 数字类型会被转换为字符串 "2"
default_value: "unknown number"
输出: "two"
condition_list: """
red:red color
blue:blue color
"""
match_value: "yellow"
default_value: "unknown color"
输出: "unknown color" # 没有找到匹配项时返回默认值
TimeFormatter 节点允许你使用Python的日期时间格式化语法来格式化当前时间。你可以自由定制输出格式,支持年、月、日、时、分、秒等时间组件。
format_string: "%Y-%m-%d"
输出: "2024-12-21" # 仅显示年月日
format_string: "%Y-%m-%d %H:%M:%S"
输出: "2024-12-21 23:35:08" # 显示年月日时分秒
format_string: "现在是%Y年%m月%d日 %H点%M分"
输出: "现在是2024年12月21日 23点35分"
StringConverter 节点允许你将字符串转换为其他数据类型。支持多种常用数据类型的转换,并会在转换失败时抛出异常。
input_string: "123"
target_type: "INT"
输出: 123
input_string: "123.45"
target_type: "FLOAT"
输出: 123.45
input_string: "true" # 或 "1", "yes", "y", "on"
target_type: "BOOL"
输出: True
input_string: "a, b, c"
target_type: "LIST"
输出: ["a", "b", "c"]
input_string: '{"name": "test", "value": 123}'
target_type: "DICT"
输出: {"name": "test", "value": 123}