天道酬勤,学无止境

replace

C# String Replace safely

问题 您对如何安全地替换字符串有任何想法或提示吗? 例子: string Example = "OK OR LOK"; 现在我想用 true 替换“OK”,用 false 替换“LOK”。 Example = Example.Replace("OK", "true"); Example = Example.Replace("LOK", "false"); 现在结果是: Example = "true or Ltrue"; 结果应该是: Example ="true or false"; 我理解这个问题,但我不知道如何解决这个问题。 谢谢 回答1 你可以先用这个方法替换最长的字符串,fe: public static string ReplaceSafe(string str, IEnumerable<KeyValuePair<string, string>> replaceAllOfThis) { foreach (var kv in replaceAllOfThis.OrderByDescending(kv => kv.Key.Length)) { str = str.Replace(kv.Key, kv.Value); } return str; } 你的例子: Example = ReplaceSafe(Example, new[] {new KeyValuePair

2022-07-11 09:54:17    分类:技术分享    c#   string   replace

Convert decimal to Roman numerals

问题 d_hsp={"1":"I","2":"II","3":"III","4":"IV","5":"V","6":"VI","7":"VII","8":"VIII", "9":"IX","10":"X","11":"XI","12":"XII","13":"XIII","14":"XIV","15":"XV", "16":"XVI","17":"XVII","18":"XVIII","19":"XIX","20":"XX","21":"XXI", "22":"XXII","23":"XXIII","24":"XXIV","25":"XXV"} HSP_OLD['tryl'] = HSP_OLD['tryl'].replace(d_hsp, regex=True) HSP_OLD是一个数据框, tryl是tryl的一列,下面是HSP_OLD中的一些值示例: SAF/HSP: Secondary diagnosis E code 1 SAF/HSP: Secondary diagnosis E code 11 我用字典代替,它适用于1-10,但对于11,它将变成“II”,对于12,它将变成“III”。 回答1 抱歉,没有注意到您不仅在更新字段,而且实际上想在最后替换一个数字,但即使是这种情况 - 将您的数字正确转换为罗马数字比映射所有可能的数字要好得多发生这种情况(如果数字大于 25

2022-05-17 03:57:08    分类:技术分享    python   regex   pandas   dictionary   replace

Replace all a in the middle of string by * using regex

问题 我想在python中使用正则表达式用'*'替换字符串中间的所有'A'我试过这个 re.sub(r'[B-Z]+([A]+)[B-Z]+', r'*', 'JAYANTA ') 但它输出 - '*ANTA' 我希望它是“J*Y*NTA” 有人可以提供所需的代码吗? 如果可能的话,我想解释一下我的代码有什么问题。 回答1 使用非字边界 \B。 要确保 A 被单词字符包围: import re str = 'JAYANTA POKED AGASTYA WITH BAAAAMBOO ' str = re.sub(r'\BA+\B', r'*', str) print(str) 印刷: J*Y*NTA POKED AG*STYA WITH B*MBOO 或者,如果您想更具体一点,它必须用大写字母包围。 您可以改用lookbehind 和lookahead。 str = re.sub(r'(?<=[A-Z])A+(?=[A-Z])', r'*', str) 回答2 >>> re.sub(r'(?!^)[Aa](?!$)','*','JAYANTA') 'J*Y*NTA' 回答3 前瞻断言: >>> re.sub(r'A(?=[A-Z])', r'*', 'JAYANTA ') 'J*Y*NTA ' 如果单词以“A”开头和结尾: >>> re.sub(r'(?<=[A-Z])A(?=[A

2022-05-16 16:07:29    分类:技术分享    python   regex   replace

python: why does replace not work?

问题 from openpyxl import load_workbook def rem(string): print string.startswith("http://") #it yields "True" string.replace("http://","") print string, type(string) #checking if it works (it doesn't though, the output is the same as the input) wb = load_workbook("prova.xlsx") ws = wb["Sheet"] for n in xrange(2,698): c = "B"+str(n) print ws[c].value, type(ws[c].value) #just to check value and type (unicode) rem(str(ws[c].value)) #transformed to string in order to make replace() work wb.save("prova.xlsx") #nothing has changed 回答1 string.replace(old, new[, max])只返回一个值——它不修改string 。 例如, >>> a =

2022-05-15 20:32:12    分类:技术分享    python   replace   openpyxl

remove control character whitespaces from dataframe

问题 我有一个数据框 df ,我通过它获取列表列表 data = [list(map(str,n.tolist())) for n in df.values] 之后我从这样的数据中替换特定的控制字符 data = [ [e.replace(u'\xa0', u'') for e in tempval ] for tempval in data ] 这很好用,但我希望在数据框本身中完成,请提出一些建议。 回答1 您可以使用 DataFrame.replace: df = pd.DataFrame({'A':['\xa0','s','w'], 'B':['s','w','v'], 'C':['e','d','\xa0']}) print (df) A B C 0 s e 1 s w d 2 w v 然后用于创建list lists将DataFrame按值转换为numpy array ,然后tolist : df.replace(u'\xa0',u'', regex=True, inplace=True) #if need cast all values to str add astype print (df.astype(str).values.tolist()) [['', 's', 'e'], ['s', 'w', 'd'], ['w', 'v', '']]

2022-05-15 09:39:17    分类:技术分享    python   list   pandas   replace   dataframe

Search and replace numbers with words in file [duplicate]

问题 这个问题在这里已经有了答案: 用 Python 替换文件中的文本7 个答案 5年前关闭。 我有一个包含数字和字母的文件,我想将所有数字替换为单词(例如,8 转换为 8)。 好吧,我只是没有办法检查我的文件中是否有数字。 做到这一点的最佳有效方法是什么? 回答1 以下应该可以工作,它读取输入文件,使用正则表达式查找所有数字,并使用 num2words 库将每个数字替换为文本: import re import num2words with open('input.txt') as f_input: text = f_input.read() text = re.sub(r"(\d+)", lambda x: num2words.num2words(int(x.group(0))), text) with open('output.txt', 'w') as f_output: f_output.write(text) 可以使用以下方式安装num2words库: pip install num2words 因此,如果您的输入文本文件包含: Today 1000 people wrote 500 words to make 321 questions. 输出将是: Today one thousand people wrote five hundred words to make

2022-05-15 09:13:07    分类:技术分享    python   regex   file   search   replace

How to replace curly braces and its contents in a string

问题 我遇到了一个问题,试图用一个外部值替换用花括号描述的字符串的某些内容。 相关代码示例: string value = "6"; string sentence = "What is 3 x {contents}"; # insert some sort of method sentence.replace(value,"{contents}"); 用值替换“{contents}”的最佳方法是什么,因为花括号内的名称可能会更改,但无论名称如何,它将包含在花括号内。 我对正则表达式进行了一些研究,要么是我迷失了这些概念,要么是我找不到相关的语法来完成我想做的事情。 这是实现这一目标的最佳方法,如果是这样,如何实现? 如果不是,那么实现这一目标的更好方法是什么? 回答1 使用Regex.Replace : string value = "6"; string sentence = "What is 3 x {contents}"; var result = Regex.Replace(sentence, "{.*?}", value); // What is 3 X 6 MSDN 是了解正则表达式的好地方 回答2 public static string FormatNamed(this string format, params object[] args) { var

2022-05-15 07:48:04    分类:技术分享    c#   regex   replace

Pandas replace with default value

问题 我有一个熊猫数据框,我想有条件地替换某个列。 例如: col 0 Mr 1 Miss 2 Mr 3 Mrs 4 Col. 我想将它们映射为 {'Mr': 0, 'Mrs': 1, 'Miss': 2} 如果字典中现在还有其他可用的标题,那么我希望它们的默认值为3 上面的例子变成 col 0 0 1 2 2 0 3 1 4 3 我可以在不使用 regex 的情况下使用 pandas.replace() 来做到这一点吗? 回答1 您可以使用 map 而不是replace ,因为更快,然后 fillna 3并通过 astype 转换为int : df['col'] = df.col.map({'Mr': 0, 'Mrs': 1, 'Miss': 2}).fillna(3).astype(int) print (df) col 0 0 1 2 2 0 3 1 4 3 numpy.where 和 isin 条件的另一个解决方案: d = {'Mr': 0, 'Mrs': 1, 'Miss': 2} df['col'] = np.where(df.col.isin(d.keys()), df.col.map(d), 3).astype(int) print (df) col 0 0 1 2 2 0 3 1 4 3 替换解决方案: d = {'Mr': 0, 'Mrs': 1, 'Miss

2022-05-14 20:56:08    分类:技术分享    python   pandas   replace   dataframe   conditional-statements

Insert a Newline Character using Regex Replace

问题 我正在尝试使用正则表达式替换插入换行符,如下所示: strFile = Regex.Replace( strFile, @"(FA|BO)\s+(\d{3}-\d+)(\s+)(.*?)(\s+)(\d+,*\d*\.\d+)\s*(FA|BO)\s+(\d{3}-\d+)(\s+)(.*?)(\s+)(\d+,*\d*\.\d+)\s*", @"$2&$4&$6\n$8&$10&$12" ) 但我最终得到(字面意思) word\nword而不是实际的换行符。 我究竟做错了什么? 回答1 strFile = Regex.Replace( strFile, @"(FA|BO)\s+(\d{3}-\d+)(\s+)(.*?)(\s+)(\d+,*\d*\.\d+)\s*(FA|BO)\s+(\d{3}-\d+)(\s+)(.*?)(\s+)(\d+,*\d*\.\d+)\s*", "$2&$4&$6\n$8&$10&$12");

2022-05-14 15:19:04    分类:技术分享    c#   regex   replace

Powershell regular expression to replace a digit with a string of variable length

问题 我有以下字符串 $FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV' 我想用一串问号替换花括号中的数字,n个字符长 例如,我希望它返回'blah_????_?????_blah_????-??.CSV' 到目前为止我有这个,但似乎无法在替换工作中得到“扩展” [regex]::Replace($FileNamePattern,'{(\d+)}','"?"*$1') 任何帮助将不胜感激! 马修 回答1 您需要在回调方法中处理匹配: $callback = { param($match) "?" * [int]$match.Groups[1].Value } $FileNamePattern = 'blah_{4}_{5}_blah_{4}-{2}.CSV' $rex = [regex]'{(\d+)}' $rex.Replace($FileNamePattern, $callback) 正则表达式{(\d+)}匹配{和}并在其间捕获 1+ 位。 子匹配在回调中被解析为一个整数(参见[int]$match.Groups[1].Value ),然后是? 用"?" * [int]$match.Groups[1].Value重复了那个次数 "?" * [int]$match.Groups[1].Value 。

2022-05-14 14:51:12    分类:技术分享    regex   powershell   replace   expression